Я пишу игровой движок для мобильных устройств и пытаюсь поддерживать несколько разрешений. Мир игры может быть намного больше экрана, поэтому я использую клипер для создания окна просмотра.
Мое устройство имеет разрешение 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)
Перемещение поверхности за пределы экрана справа работает нормально, поверхность обрезается правильно.
Как я могу обрезать поверхности на моем заднем буфере, когда поверхность больше, чем задний буфер?
Заранее спасибо