summaryrefslogtreecommitdiffstats
path: root/libs/hwui/OpenGLRenderer.cpp
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2011-05-02 18:33:26 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-05-02 18:33:26 -0700
commitdf0a7fbdcff3c683641b7980da50a7d0eebe0876 (patch)
treebce1f0ec1aecb5735a1dd17a7a5a87f13d7a94b0 /libs/hwui/OpenGLRenderer.cpp
parent8ef9eaaea8cc27145bf159e45b7d9eaa0aae6d5c (diff)
parent8f0095cd33558e9cc8a440047908e53b68906f5f (diff)
downloadframeworks_base-df0a7fbdcff3c683641b7980da50a7d0eebe0876.zip
frameworks_base-df0a7fbdcff3c683641b7980da50a7d0eebe0876.tar.gz
frameworks_base-df0a7fbdcff3c683641b7980da50a7d0eebe0876.tar.bz2
Merge "Allows to render with an OpenGL context inside a TextureView."
Diffstat (limited to 'libs/hwui/OpenGLRenderer.cpp')
-rw-r--r--libs/hwui/OpenGLRenderer.cpp21
1 files changed, 17 insertions, 4 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 049e9b7..6f751e8 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -637,7 +637,12 @@ void OpenGLRenderer::drawTextureLayer(Layer* layer, const Rect& rect) {
float alpha = layer->alpha / 255.0f;
setupDraw();
- setupDrawWithExternalTexture();
+ if (layer->renderTarget == GL_TEXTURE_2D) {
+ setupDrawWithTexture();
+ } else {
+ setupDrawWithExternalTexture();
+ }
+ setupDrawTextureTransform();
setupDrawColor(alpha, alpha, alpha, alpha);
setupDrawColorFilter();
setupDrawBlending(layer->blend, layer->mode);
@@ -645,8 +650,12 @@ void OpenGLRenderer::drawTextureLayer(Layer* layer, const Rect& rect) {
setupDrawModelView(rect.left, rect.top, rect.right, rect.bottom);
setupDrawPureColorUniforms();
setupDrawColorFilterUniforms();
- setupDrawExternalTexture(layer->texture);
- setupDrawTextureTransform(layer->texTransform);
+ if (layer->renderTarget == GL_TEXTURE_2D) {
+ setupDrawTexture(layer->texture);
+ } else {
+ setupDrawExternalTexture(layer->texture);
+ }
+ setupDrawTextureTransformUniforms(layer->texTransform);
setupDrawMesh(&mMeshVertices[0].position[0], &mMeshVertices[0].texture[0]);
glDrawArrays(GL_TRIANGLE_STRIP, 0, gMeshCount);
@@ -1095,7 +1104,11 @@ void OpenGLRenderer::setupDrawExternalTexture(GLuint texture) {
glEnableVertexAttribArray(mTexCoordsSlot);
}
-void OpenGLRenderer::setupDrawTextureTransform(mat4& transform) {
+void OpenGLRenderer::setupDrawTextureTransform() {
+ mDescription.hasTextureTransform = true;
+}
+
+void OpenGLRenderer::setupDrawTextureTransformUniforms(mat4& transform) {
glUniformMatrix4fv(mCaches.currentProgram->getUniform("mainTextureTransform"), 1,
GL_FALSE, &transform.data[0]);
}