LINUX.ORG.RU

История изменений

Исправление X512, (текущая версия) :

все равно рисование идет в ограниченной области

Речь про предотвращение мерцания и тиринга, а не про оконные регионы. Например есть поток графических команд:

ClipToRect(100, 100, 200, 200);
FillRect(0, 0, 1000, 1000, 0xff0000);
ClipToRect(120, 120, 220, 220);
FillRect(0, 0, 1000, 1000, 0x00ff00);
ClipToRect(140, 140, 240, 240);
FillRect(0, 0, 1000, 1000, 0x0000ff);
Flush();
ClipToRect(100, 100, 200, 200);
FillRect(0, 0, 1000, 1000, 0xff0000);
ClipToRect(120, 120, 220, 220);
FillRect(0, 0, 1000, 1000, 0x00ff00);
ClipToRect(140, 140, 240, 240);
FillRect(0, 0, 1000, 1000, 0x0000ff);
Flush();
ClipToRect(100, 100, 200, 200);
FillRect(0, 0, 1000, 1000, 0xff0000);
ClipToRect(120, 120, 220, 220);
FillRect(0, 0, 1000, 1000, 0x00ff00);
ClipToRect(140, 140, 240, 240);
FillRect(0, 0, 1000, 1000, 0x0000ff);
Flush();

Без Flush() вы не сможете узнать где закончился один кадр и начался новый и у вас будет мигать картинка в месте пересечения прямоугольников.

Исходная версия X512, :

все равно рисование идет в ограниченной области

Речь про предотвращение мерцания и тиринга, а не про оконные регионы. Например есть поток графических команд:

ClipToRect(100, 100, 200, 200);
FillRect(0, 0, 1000, 1000, 0xff0000);
ClipToRect(120, 120, 220, 220);
FillRect(0, 0, 1000, 1000, 0x00ff00);
ClipToRect(140, 140, 240, 240);
FillRect(0, 0, 1000, 1000, 0x00ff00);
Flush();
ClipToRect(100, 100, 200, 200);
FillRect(0, 0, 1000, 1000, 0xff0000);
ClipToRect(120, 120, 220, 220);
FillRect(0, 0, 1000, 1000, 0x00ff00);
ClipToRect(140, 140, 240, 240);
FillRect(0, 0, 1000, 1000, 0x00ff00);
Flush();
ClipToRect(100, 100, 200, 200);
FillRect(0, 0, 1000, 1000, 0xff0000);
ClipToRect(120, 120, 220, 220);
FillRect(0, 0, 1000, 1000, 0x00ff00);
ClipToRect(140, 140, 240, 240);
FillRect(0, 0, 1000, 1000, 0x00ff00);
Flush();

Без Flush() вы не сможете узнать где закончился один кадр и начался новый и у вас будет мигать картинка в месте пересечения прямоугольников.