From a0b2deb4192bddad4d061f5d5df86411a437f01f Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 28 Jan 2014 00:30:51 +0300 Subject: add support for screen scale in OpenGL modes. --- src/render/normalopenglgraphics.cpp | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) (limited to 'src/render/normalopenglgraphics.cpp') diff --git a/src/render/normalopenglgraphics.cpp b/src/render/normalopenglgraphics.cpp index 5b7abd895..e8e1a2116 100644 --- a/src/render/normalopenglgraphics.cpp +++ b/src/render/normalopenglgraphics.cpp @@ -140,11 +140,14 @@ void NormalOpenGLGraphics::initArrays() } bool NormalOpenGLGraphics::setVideoMode(const int w, const int h, - const int bpp, const bool fs, - const bool hwaccel, const bool resize, + const int scale, + const int bpp, + const bool fs, + const bool hwaccel, + const bool resize, const bool noFrame) { - setMainFlags(w, h, bpp, fs, hwaccel, resize, noFrame); + setMainFlags(w, h, scale, bpp, fs, hwaccel, resize, noFrame); return setOpenGLMode(); } @@ -1103,10 +1106,12 @@ void NormalOpenGLGraphics::_beginDraw() const int h = mRect.h; #ifdef ANDROID - glOrthof(0.0, static_cast(w), static_cast(h), + glOrthof(0.0, static_cast(w), + static_cast(h), 0.0, -1.0, 1.0); #else - glOrtho(0.0, static_cast(w), static_cast(h), + glOrtho(0.0, static_cast(w), + static_cast(h), 0.0, -1.0, 1.0); #endif @@ -1229,8 +1234,10 @@ bool NormalOpenGLGraphics::pushClipArea(gcn::Rectangle area) glTranslatef(static_cast(transX), static_cast(transY), 0); } - glScissor(clipArea.x, mRect.h - clipArea.y - clipArea.height, - clipArea.width, clipArea.height); + glScissor(clipArea.x * mScale, + (mRect.h - clipArea.y - clipArea.height) * mScale, + clipArea.width * mScale, + clipArea.height * mScale); return result; } @@ -1257,8 +1264,10 @@ void NormalOpenGLGraphics::popClipArea() glTranslatef(static_cast(transX), static_cast(transY), 0); } - glScissor(clipArea.x, mRect.h - clipArea.y - clipArea.height, - clipArea.width, clipArea.height); + glScissor(clipArea.x * mScale, + (mRect.h - clipArea.y - clipArea.height) * mScale, + clipArea.width * mScale, + clipArea.height * mScale); } void NormalOpenGLGraphics::drawPoint(int x, int y) -- cgit v1.2.3-70-g09d2