DirectDraw: отсечение завершается неудачно, если поверхность больше, чем буфер - PullRequest
0 голосов
/ 02 июля 2010

Я пишу игровой движок для мобильных устройств и пытаюсь поддерживать несколько разрешений. Мир игры может быть намного больше экрана, поэтому я использую клипер для создания окна просмотра.

Мое устройство имеет разрешение 240х320. Когда я устанавливаю область просмотра на 240x320 и мой мир на 240x320, все в порядке. Я могу без проблем сдвинуть мир за пределы экрана. Однако, когда моя область просмотра составляет 220x320, а мой мир - 240x320, блиттинг завершается с DDERR_INVALIDPARAMS, когда поверхность выходит за пределы экрана слева:

(09:02:06) - INFO - ERROR! DirectDraw: One or more of the passed parameters are incorrect. (DDERR_INVALIDPARAMS)
(09:02:06) - INFO - ERROR! Couldn't copy to screen. (RECT: -1, 0, 239, 320) (line 125 in file .\src\SurfaceDirectDraw.cpp)
(09:02:06) - INFO - Dimensions: (0, 0, 240, 320)
(09:02:06) - INFO - ERROR! DirectDraw: One or more of the passed parameters are incorrect. (DDERR_INVALIDPARAMS)
(09:02:06) - INFO - ERROR! Couldn't copy to screen. (RECT: -2, 0, 238, 320) (line 125 in file .\src\SurfaceDirectDraw.cpp)
(09:02:06) - INFO - Dimensions: (0, 0, 240, 320)
(09:02:06) - INFO - ERROR! DirectDraw: One or more of the passed parameters are incorrect. (DDERR_INVALIDPARAMS)
(09:02:06) - INFO - ERROR! Couldn't copy to screen. (RECT: -3, 0, 237, 320) (line 125 in file .\src\SurfaceDirectDraw.cpp)
(09:02:06) - INFO - Dimensions: (0, 0, 240, 320)

Перемещение поверхности за пределы экрана справа работает нормально, поверхность обрезается правильно.

Как я могу обрезать поверхности на моем заднем буфере, когда поверхность больше, чем задний буфер?

Заранее спасибо

1 Ответ

0 голосов
/ 02 июля 2010

Я действительно не знаю, правильно ли я (DirectDraw не использовался в течение многих лет), но я предполагаю, что это об отрицательном прямоугольнике отсечения. Поэтому, возможно, вам следует установить 0/0 в крайнее левое / верхнее положение, чтобы вы не получали отрицательные числа.

...