История изменений
Исправление X512, (текущая версия) :
Если он воспроизводит только поток команд рисования, а приложение внезапно рисует в буфер самостоятельно, будет различие между картинкой локально и тем, что показывает клиент удалённого рабочего стола.
Рисовать напрямую в задний буфер нельзя, надо выделить новый растровый буфер и вызвать BView::DrawBitmap. Так как клиент удалённого рабочего стола не может использовать общую память, содержимое картинки передаётся по сокету.
Повторяю в третий раз.
Вам известно понятие регионов? Регионы - это набор отсортированных не пересекающихся прямоугольников с которыми можно выполнять булевы операции и которые используются для отсечения (clipping) отрисовки. У каждого окна есть регион, которым отсекаются все графические команды, приходящие в него. Если одно окно заслонено другим, то от региона нижнего окна вычитается регион верхнего окна. В результате регионы окон не пересекаются и окна могут рисовать параллельно друг от друга. Если переднее окно переместить, то регион заднего окна может расшириться и новая часть будет перерисована.
Картинка с пояснением: https://imgur.com/a/tWRVUAH.
Исправление X512, :
Если он воспроизводит только поток команд рисования, а приложение внезапно рисует в буфер самостоятельно, будет различие между картинкой локально и тем, что показывает клиент удалённого рабочего стола.
Рисовать напрямую в задний буфер нельзя, надо выделить новый растровый буфер и вызвать BView::DrawBitmap. Так как клиент удалённого рабочего стола не может использовать общую память, содержимое картинки передаётся по сокету.
Повторяю в третий раз.
Вам известно понятие регионов? Регионы - это набор отсортированных не пересекающихся прямоугольников с которыми можно выполнять булевы операции и которые используются для отсечения (clipping) отрисовки. У каждого окна есть регион, которым отсекается все графические команды, приходящие в него. Если одно окно заслонено другим, то от региона нижнего окна вычитается регион верхнего окна. В результате регионы окон не пересекаются и окна могут рисовать параллельно друг от друга. Если переднее окно переместить, то регион заднего окна может расшириться и новая часть будет перерисована.
Картинка с пояснением: https://imgur.com/a/tWRVUAH.
Исходная версия X512, :
Если он воспроизводит только поток команд рисования, а приложение внезапно рисует в буфер самостоятельно, будет различие между картинкой локально и тем, что показывает клиент удалённого рабочего стола.
Рисовать напрямую в задний буфер нельзя, надо выделить новый растровый буфер и вызвать BView::DrawBitmap. Так как клиент удалённого рабочего стола не может использовать общую память, содержимое картинки передаётся по сокету.
Повторяю в третий раз.
Вам известно понятие регионов? Регионы - это набор отсортированных не пересекающихся прямоугольников с которыми можно выполнять булевы операции и которые используются для отсечения (clipping) отрисовки. У каждого окна есть регион, которым отсекается все графические команды, приходящие в него. Если одно окно заслонено другим, то от региона нижнего окна вычитается регион верхнего окна. В результате регионы окон не пересекаются и окна могут рисовать параллельно друг от друга.
Картинка с пояснением: https://imgur.com/a/tWRVUAH.