summaryrefslogtreecommitdiff
path: root/src/openglgraphics.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/openglgraphics.cpp')
-rw-r--r--src/openglgraphics.cpp21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/openglgraphics.cpp b/src/openglgraphics.cpp
index f5e9f8107..b744a3caf 100644
--- a/src/openglgraphics.cpp
+++ b/src/openglgraphics.cpp
@@ -2,7 +2,7 @@
* The ManaPlus Client
* Copyright (C) 2004-2009 The Mana World Development Team
* Copyright (C) 2009-2010 The Mana Developers
- * Copyright (C) 2011 The ManaPlus Developers
+ * Copyright (C) 2011-2012 The ManaPlus Developers
*
* This file is part of The ManaPlus Client.
*
@@ -588,22 +588,25 @@ void OpenGLGraphics::drawRescaledImagePattern(Image *image,
const int height = (py + scaledHeight >= h)
? h - py : scaledHeight;
const int dstY = y + py;
+ const int scaledY = srcY + height / scaleFactorH;
for (int px = 0; px < w; px += scaledWidth)
{
- int width = (px + scaledWidth >= w) ? w - px : scaledWidth;
- int dstX = x + px;
+ const int width = (px + scaledWidth >= w)
+ ? w - px : scaledWidth;
+ const int dstX = x + px;
+ const int scaledX = srcX + width / scaleFactorW;
mIntTexArray[vp + 0] = srcX;
mIntTexArray[vp + 1] = srcY;
- mIntTexArray[vp + 2] = srcX + width / scaleFactorW;
+ mIntTexArray[vp + 2] = scaledX;
mIntTexArray[vp + 3] = srcY;
- mIntTexArray[vp + 4] = srcX + width / scaleFactorW;
- mIntTexArray[vp + 5] = srcY + height / scaleFactorH;
+ mIntTexArray[vp + 4] = scaledX;
+ mIntTexArray[vp + 5] = scaledY;
mIntTexArray[vp + 6] = srcX;
- mIntTexArray[vp + 7] = srcY + height / scaleFactorH;
+ mIntTexArray[vp + 7] = scaledY;
mIntVertArray[vp + 0] = dstX;
mIntVertArray[vp + 1] = dstY;
@@ -1020,6 +1023,7 @@ SDL_Surface* OpenGLGraphics::getScreenshot()
{
int h = mTarget->h;
int w = mTarget->w;
+ GLint pack = 1;
SDL_Surface *screenshot = SDL_CreateRGBSurface(
SDL_SWSURFACE,
@@ -1033,6 +1037,7 @@ SDL_Surface* OpenGLGraphics::getScreenshot()
SDL_LockSurface(screenshot);
// Grap the pixel buffer and write it to the SDL surface
+ glGetIntegerv(GL_PACK_ALIGNMENT, &pack);
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glReadPixels(0, 0, w, h, GL_RGB, GL_UNSIGNED_BYTE, screenshot->pixels);
@@ -1054,6 +1059,8 @@ SDL_Surface* OpenGLGraphics::getScreenshot()
free(buf);
+ glPixelStorei(GL_PACK_ALIGNMENT, pack);
+
if (SDL_MUSTLOCK(screenshot))
SDL_UnlockSurface(screenshot);