J'écris un moteur de jeu pour les appareils mobiles, et j'essaye de supporter plusieurs résolutions. Le monde du jeu peut être beaucoup plus grand que l'écran, donc j'utilise un clipper pour créer une fenêtre sur le monde.DirectDraw: L'écrêtage échoue si la surface est plus grande que le backbuffer
Mon périphérique a une résolution de 240x320. Quand je mets la viewport à 240x320 et mon monde à 240x320, tout va bien. Je peux faire glisser le monde en dehors de l'écran sans problèmes. Cependant, lorsque ma fenêtre est 220x320 et mon monde est 240x320, blitting échoue avec DDERR_INVALIDPARAMS
lorsque la surface se déplace en dehors de l'écran sur la gauche:
(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)
Déplacer la surface extérieure de l'écran à droite fonctionne très bien, la surface est découpé correctement.
Comment est-ce que je peux découper des surfaces sur mon backbuffer quand la surface est plus grande que le backbuffer?
Merci à l'avance
Les nombres vont dans le négatif parce que la surface est à la gauche du backbuffer. – knight666