Parcourir la source

Fixed bug 2646 - Problems with software renderer when SDL_SetRenderLogicalSize set

Fixed setting the software renderer clip rectangle when a viewport is set
Sam Lantinga il y a 7 ans
Parent
commit
f8e1874d01
1 fichiers modifiés avec 7 ajouts et 2 suppressions
  1. 7 2
      src/render/software/SDL_render_sw.c

+ 7 - 2
src/render/software/SDL_render_sw.c

@@ -371,9 +371,14 @@ SW_UpdateClipRect(SDL_Renderer * renderer)
     SDL_Surface *surface = data->surface;
     if (surface) {
         if (renderer->clipping_enabled) {
-            SDL_SetClipRect(surface, &renderer->clip_rect);
+            SDL_Rect clip_rect;
+            clip_rect = renderer->clip_rect;
+            clip_rect.x += renderer->viewport.x;
+            clip_rect.y += renderer->viewport.y;
+            SDL_IntersectRect(&renderer->viewport, &clip_rect, &clip_rect);
+            SDL_SetClipRect(surface, &clip_rect);
         } else {
-            SDL_SetClipRect(surface, NULL);
+            SDL_SetClipRect(surface, &renderer->viewport);
         }
     }
     return 0;