浏览代码

Better fix for bug 2207 - SDL_RenderSetViewport behavior is different/incorrect on OpenGL renderer vs DirectX renderer
At least, it works better here on my Mac. :)

Sam Lantinga 11 年之前
父节点
当前提交
8093cfd8ce
共有 1 个文件被更改,包括 11 次插入3 次删除
  1. 11 3
      src/render/opengl/SDL_render_gl.c

+ 11 - 3
src/render/opengl/SDL_render_gl.c

@@ -919,13 +919,21 @@ GL_UpdateViewport(SDL_Renderer * renderer)
         return 0;
         return 0;
     }
     }
 
 
-    data->glViewport(renderer->viewport.x, renderer->viewport.y,
-                     renderer->viewport.w, renderer->viewport.h);
+    if (renderer->target) {
+        data->glViewport(renderer->viewport.x, renderer->viewport.y,
+                         renderer->viewport.w, renderer->viewport.h);
+    } else {
+        int w, h;
+
+        SDL_GetRendererOutputSize(renderer, &w, &h);
+        data->glViewport(renderer->viewport.x, (h - renderer->viewport.y - renderer->viewport.h),
+                         renderer->viewport.w, renderer->viewport.h);
+    }
 
 
     data->glMatrixMode(GL_PROJECTION);
     data->glMatrixMode(GL_PROJECTION);
     data->glLoadIdentity();
     data->glLoadIdentity();
     if (renderer->viewport.w && renderer->viewport.h) {
     if (renderer->viewport.w && renderer->viewport.h) {
-        if (!renderer->target) {
+        if (renderer->target) {
             data->glOrtho((GLdouble) 0,
             data->glOrtho((GLdouble) 0,
                           (GLdouble) renderer->viewport.w,
                           (GLdouble) renderer->viewport.w,
                           (GLdouble) 0,
                           (GLdouble) 0,