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