summaryrefslogtreecommitdiff
path: root/src/normalopenglgraphics.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2013-08-26 19:27:35 +0300
committerAndrei Karas <akaras@inbox.ru>2013-08-26 19:27:35 +0300
commita1a00f0ed5366cfb8dbe448078ccc60331a0cdaa (patch)
tree53118e9c8513217746f16e2cca7ed894b2c4e39f /src/normalopenglgraphics.cpp
parenta9b4bdf0bea8fe1b2be8f1839e95d7c0a5d012b1 (diff)
downloadmv-a1a00f0ed5366cfb8dbe448078ccc60331a0cdaa.tar.gz
mv-a1a00f0ed5366cfb8dbe448078ccc60331a0cdaa.tar.bz2
mv-a1a00f0ed5366cfb8dbe448078ccc60331a0cdaa.tar.xz
mv-a1a00f0ed5366cfb8dbe448078ccc60331a0cdaa.zip
improve a bit OpenGL drawing speed.
Diffstat (limited to 'src/normalopenglgraphics.cpp')
-rw-r--r--src/normalopenglgraphics.cpp43
1 files changed, 20 insertions, 23 deletions
diff --git a/src/normalopenglgraphics.cpp b/src/normalopenglgraphics.cpp
index 9526d4ee3..66dfadabf 100644
--- a/src/normalopenglgraphics.cpp
+++ b/src/normalopenglgraphics.cpp
@@ -111,15 +111,13 @@ static inline void drawQuad(const Image *const image,
{
if (OpenGLImageHelper::mTextureType == GL_TEXTURE_2D)
{
+ const float tw = static_cast<float>(image->mTexWidth);
+ const float th = static_cast<float>(image->mTexHeight);
// Find OpenGL normalized texture coordinates.
- const float texX1 = static_cast<float>(srcX) /
- static_cast<float>(image->mTexWidth);
- const float texY1 = static_cast<float>(srcY) /
- static_cast<float>(image->mTexHeight);
- const float texX2 = static_cast<float>(srcX + width) /
- static_cast<float>(image->mTexWidth);
- const float texY2 = static_cast<float>(srcY + height) /
- static_cast<float>(image->mTexHeight);
+ const float texX1 = static_cast<float>(srcX) / tw;
+ const float texY1 = static_cast<float>(srcY) / th;
+ const float texX2 = static_cast<float>(srcX + width) / tw;
+ const float texY2 = static_cast<float>(srcY + height) / th;
GLfloat tex[] =
{
@@ -181,15 +179,13 @@ static inline void drawRescaledQuad(const Image *const image,
{
if (OpenGLImageHelper::mTextureType == GL_TEXTURE_2D)
{
+ const float tw = static_cast<float>(image->mTexWidth);
+ const float th = static_cast<float>(image->mTexHeight);
// Find OpenGL normalized texture coordinates.
- const float texX1 = static_cast<float>(srcX) /
- static_cast<float>(image->mTexWidth);
- const float texY1 = static_cast<float>(srcY) /
- static_cast<float>(image->mTexHeight);
- const float texX2 = static_cast<float>(srcX + width) /
- static_cast<float>(image->mTexWidth);
- const float texY2 = static_cast<float>(srcY + height) /
- static_cast<float>(image->mTexHeight);
+ const float texX1 = static_cast<float>(srcX) / tw;
+ const float texY1 = static_cast<float>(srcY) / th;
+ const float texX2 = static_cast<float>(srcX + width) / tw;
+ const float texY2 = static_cast<float>(srcY + height) / th;
GLfloat tex[] =
{
@@ -254,8 +250,6 @@ bool NormalOpenGLGraphics::drawImage2(const Image *const image,
return false;
const SDL_Rect &imageRect = image->mBounds;
- srcX += imageRect.x;
- srcY += imageRect.y;
if (!useColor)
setColorAlpha(image->mAlpha);
@@ -267,7 +261,8 @@ bool NormalOpenGLGraphics::drawImage2(const Image *const image,
setTexturingAndBlending(true);
- drawQuad(image, srcX, srcY, dstX, dstY, width, height);
+ drawQuad(image, srcX + imageRect.x, srcY + imageRect.y,
+ dstX, dstY, width, height);
return true;
}
@@ -1016,10 +1011,11 @@ bool NormalOpenGLGraphics::calcWindow(ImageCollection *const vertCol,
vert = vertCol->currentVert;
}
+ const Image *const *const grid = &imgRect.grid[0];
return calcImageRect(vert, x, y, w, h,
- imgRect.grid[0], imgRect.grid[2], imgRect.grid[6], imgRect.grid[8],
- imgRect.grid[1], imgRect.grid[5], imgRect.grid[7], imgRect.grid[3],
- imgRect.grid[4]);
+ grid[0], grid[2], grid[6], grid[8],
+ grid[1], grid[5], grid[7], grid[3],
+ grid[4]);
}
void NormalOpenGLGraphics::updateScreen()
@@ -1134,7 +1130,8 @@ SDL_Surface* NormalOpenGLGraphics::getScreenshot()
const unsigned int lineSize = 3 * w;
GLubyte *const buf = static_cast<GLubyte *const>(malloc(lineSize));
- for (int i = 0; i < (h / 2); i++)
+ const int h2 = h / 2;
+ for (int i = 0; i < h2; i++)
{
GLubyte *const top = static_cast<GLubyte *const>(
screenshot->pixels) + lineSize * i;