[quote="dr.Titus"]
И что будет делать система, если предыдущая не закончилась, а я запросил новую? Поставит в очередь или же откажет?
Несколько раз поставит в очередь, если очередь переполнится, то вернет ошибку, НО!!! У тебя такого не может быть, т.к. ты сам ждешь Vblank и больше одного кадра в очередь не кидаешь.
https://msdn.microsoft.com/en-us/librar … s.85).aspx
DDBLT_ASYNC
Performs this bitblt asynchronously through the first in, first out (FIFO) hardware in the order received. If no room is available in the FIFO hardware, the call fails.
Ну и еще 2 полезных флага:
DDBLT_DONOTWAIT
Returns without bitbltting and also returns DDERR_WASSTILLDRAWING if the bitbltter is busy.
DDBLT_WAIT
Postpones the DDERR_WASSTILLDRAWING return value if the bitbltter is busy, and returns as soon as the bitblt can be set up or another error occurs.
Еще там же (важно из какой памяти ты Blt делаешь из системной или из видяшной):
Remarks
Blt can perform synchronous or asynchronous bitblts (the latter is the default behavior). These bitblts can occur from display memory to display memory, from display memory to system memory, from system memory to display memory, or from system memory to system memory. The bitblts can be performed by using source color keys and destination color keys. Arbitrary stretching or shrinking is performed if the source and destination rectangles are not the same size.
Typically, Blt returns immediately with an error if the bitbltter is busy and the bitblt could not be set up. Specify the DDBLT_WAIT flag to request a synchronous bitblt. When you include the DDBLT_WAIT flag, Blt waits until the bitblt can be set up or another error occurs before it returns.
RECT structures are defined so that the right and bottom members are exclusive—therefore, right minus left equals the width of the rectangle, not 1 less than the width.Отредактировано deathsoft (2016-10-23 21:20:43)


