From 8093cfd8ce93ad873d0c546e575caa976b7a6992 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 15 Nov 2013 22:07:35 -0800 Subject: [PATCH] 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. :) --- src/render/opengl/SDL_render_gl.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/render/opengl/SDL_render_gl.c b/src/render/opengl/SDL_render_gl.c index a25c7f9f02aa6..77b688d638624 100644 --- a/src/render/opengl/SDL_render_gl.c +++ b/src/render/opengl/SDL_render_gl.c @@ -919,13 +919,21 @@ GL_UpdateViewport(SDL_Renderer * renderer) 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->glLoadIdentity(); if (renderer->viewport.w && renderer->viewport.h) { - if (!renderer->target) { + if (renderer->target) { data->glOrtho((GLdouble) 0, (GLdouble) renderer->viewport.w, (GLdouble) 0,