我正在为移动设备编写游戏引擎,我正在尝试支持多种分辨率。游戏世界可能比屏幕大得多,所以我使用剪切器在世界上创建一个视口。
我的设备分辨率为240x320。当我将视口设置为240x320而我的世界设置为240x320时,一切都很好。我可以毫无问题地在屏幕外滑动世界。但是,当我的视口是220x320且我的世界是240x320时,当表面移动到左侧屏幕之外时,blitting会因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)
在右侧屏幕外移动表面工作正常,表面被正确剪裁。
当表面大于后缓冲器时,如何在背后缓冲器上剪切曲面?
提前致谢
答案 0 :(得分:0)
我真的不知道我是否正确(DirectDraw多年未使用),但我猜它是关于负剪辑矩形。所以也许你应该将你的0/0设置为最左/上位置,这样你就不会得到负数。