summaryrefslogtreecommitdiff
path: root/libs/hwui/OpenGLRenderer.cpp
diff options
context:
space:
mode:
author Romain Guy <romainguy@android.com> 2010-07-16 15:07:42 -0700
committer Romain Guy <romainguy@android.com> 2010-07-16 15:07:42 -0700
commit1e79386ba34f0db38c1b35b22cdf122632534354 (patch)
tree35c3fe20c2dc66823ac1c7970e395748d8fe52a3 /libs/hwui/OpenGLRenderer.cpp
parent079ba2c85b15e882629b8d188f5fbdb42f7f8eea (diff)
Optimize textures binding.
The renderer is still changing textures' wrap modes every time, this will require a latter optimization. Change-Id: I3eb92cb8c886c4a692b7f0ca759911f9371d4d2c
Diffstat (limited to 'libs/hwui/OpenGLRenderer.cpp')
-rw-r--r--libs/hwui/OpenGLRenderer.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index d950ffac7f4e..0bf0e8942a40 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -132,6 +132,8 @@ OpenGLRenderer::OpenGLRenderer():
mShaderMatrix = NULL;
mShaderBitmap = NULL;
+ mLastTexture = 0;
+
memcpy(mDrawTextureVertices, gDrawTextureVertices, sizeof(gDrawTextureVertices));
}
@@ -650,8 +652,11 @@ void OpenGLRenderer::drawTextureMesh(float left, float top, float right, float b
chooseBlending(blend || alpha < 1.0f, mode);
- // TODO: Only bind/set parameters when needed
- glBindTexture(GL_TEXTURE_2D, texture);
+ if (texture != mLastTexture) {
+ glBindTexture(GL_TEXTURE_2D, texture);
+ mLastTexture = texture;
+ }
+ // TODO: Don't set the texture parameters every time
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, gTileModes[mShaderTileX]);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, gTileModes[mShaderTileY]);
@@ -668,8 +673,6 @@ void OpenGLRenderer::drawTextureMesh(float left, float top, float right, float b
} else {
glDrawElements(GL_TRIANGLES, elementsCount, GL_UNSIGNED_SHORT, indices);
}
-
- glBindTexture(GL_TEXTURE_2D, 0);
}
void OpenGLRenderer::chooseBlending(bool blend, SkXfermode::Mode mode, bool isPremultiplied) {