canvas/opengl/textFragmentShader.glsl           |    5 +++--
 canvas/source/opengl/ogl_canvascustomsprite.cxx |   23 +++++++++++++++++++++--
 canvas/source/opengl/ogl_canvascustomsprite.hxx |   20 +++++++++++++-------
 3 files changed, 37 insertions(+), 11 deletions(-)

New commits:
commit 5943fdb3dfa10268699cd55ea79aee5d1ca156fb
Author: Michael Jaumann <meta_...@yahoo.com>
Date:   Mon Oct 20 12:14:42 2014 +0000

    reformating, alpha blending now in fragment shader
    
    Change-Id: I9f1d707e2434712efb9e3e346ecf50aa9c539d5b

diff --git a/canvas/opengl/textFragmentShader.glsl 
b/canvas/opengl/textFragmentShader.glsl
index b1589c6..32a0423e 100644
--- a/canvas/opengl/textFragmentShader.glsl
+++ b/canvas/opengl/textFragmentShader.glsl
@@ -9,13 +9,14 @@
 
 #version 120 core
 
-uniform sampler2D TextTex;
+uniform sampler2D TextTex;     
+uniform vec4 colorTex;
 //Texture Coordinates
 varying vec2 textC     oords;
 
 void main()
 {
-        gl_FragColor = texture2D( TextTex, textCoords );
+        gl_FragColor = texture2D( TextTex, textCoords )*colorTex;
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/canvas/source/opengl/ogl_canvascustomsprite.cxx 
b/canvas/source/opengl/ogl_canvascustomsprite.cxx
index cc04907..bf5f347 100644
--- a/canvas/source/opengl/ogl_canvascustomsprite.cxx
+++ b/canvas/source/opengl/ogl_canvascustomsprite.cxx
@@ -142,6 +142,8 @@ namespace oglcanvas
         m_simpleTexUnf = glGetUniformLocation(m_simpleProgID, "TextTex");
         m_manCordUnf = glGetUniformLocation(m_texManProgID, "texCord");
         m_texColorUnf = glGetUniformLocation(m_texProgID, "constantColor");
+        m_manColorUnf = glGetUniformLocation(m_texManProgID,"colorTex");
+        m_simpleColorUnf = glGetUniformLocation(m_simpleProgID,"colorTex");
         //Gen Buffers for texturecoordinates/vertices
         glGenBuffers(1, &m_vertexBuffer);
         glGenBuffers(1, &m_uvBuffer);
@@ -212,8 +214,6 @@ namespace oglcanvas
                             GL_ONE_MINUS_SRC_ALPHA);
 
                 // blend against fixed vertex color; texture alpha is 
multiplied in
-                glColor4f(1,1,1,mfAlpha);
-
                 if( mxClip.is() )
                 {
                     const double fWidth=maSize.Width;
@@ -243,10 +243,14 @@ namespace oglcanvas
                     //Bind Buffers
                     glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);
                     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, 
GL_STATIC_DRAW);
+
                     glUseProgram(m_texManProgID);
+
                     //Set Uniforms
                     glUniform1i(m_manTexUnf, 0);
                     glUniform2f(m_manCordUnf,fWidth,fHeight);
+                    glUniform4f(m_manColorUnf, 1, 1, 1, mfAlpha);
+
                     glEnableVertexAttribArray(m_manPosAttrb);
                     glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);
                     glVertexAttribPointer(
@@ -257,7 +261,9 @@ namespace oglcanvas
                         0,                            // stride
                         (void*)0                      // array buffer offset
                     );
+
                     glDrawArrays(GL_TRIANGLES, 0, 
rTriangulatedPolygon.count());
+
                     glDisableVertexAttribArray(m_manPosAttrb);
                     glUseProgram(0);
                 }
@@ -265,6 +271,7 @@ namespace oglcanvas
                 {
                     const double fWidth=maSize.Width/aSpriteSizePixel.getX();
                     const double fHeight=maSize.Height/aSpriteSizePixel.getY();
+
                     GLfloat vertices[] = {0, 0,
                                           0, (float) aSpriteSizePixel.getY(),
                                           (float) aSpriteSizePixel.getX(), 0,
@@ -273,13 +280,17 @@ namespace oglcanvas
                                                0, (float) fHeight,
                                                (float) fWidth, 0,
                                                (float) fWidth, (float) fHeight 
};
+
                     glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);
                     glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, 
GL_STATIC_DRAW);
+
                     glBindBuffer(GL_ARRAY_BUFFER, m_uvBuffer);
                     glBufferData(GL_ARRAY_BUFFER, sizeof(uvCoordinates), 
uvCoordinates, GL_STATIC_DRAW);
 
                     glUseProgram(m_simpleProgID);
+
                     glUniform1i(m_simpleTexUnf, 0);
+                    glUniform4f(m_simpleColorUnf, 1, 1, 1, mfAlpha);
 
                     glEnableVertexAttribArray(m_simplePosAttrb); //richtige ID 
herausfinden
                     glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);
@@ -302,7 +313,9 @@ namespace oglcanvas
                         0,                            // stride
                         (void*)0                      // array buffer offset
                     );
+
                     glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
+
                     glDisableVertexAttribArray(m_simplePosAttrb);
                     glDisableVertexAttribArray(m_simpleUvAttrb);
                     glUseProgram(0);
@@ -318,11 +331,15 @@ namespace oglcanvas
                               (float) maSize.Width+4, -2,
                               -2, -2,
                               (float) maSize.Width+4, (float) maSize.Height+4 
};
+
         glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);
         glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, 
GL_STATIC_DRAW);
+
         glUseProgram(m_texProgID);
+
         glUniform4f(m_texColorUnf, 1, 0, 0, 1);
         glEnableVertexAttribArray(m_texPosAttrb); //richtige ID herausfinden
+
         glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);
         glVertexAttribPointer(
                         m_texPosAttrb,
@@ -332,7 +349,9 @@ namespace oglcanvas
                         0,                            // stride
                         (void*)0                      // array buffer offset
         );
+
         glDrawArrays(GL_LINE_STRIP, 0, 6);
+
         glDisableVertexAttribArray(m_texPosAttrb);
         glUseProgram(0);
         glBindBuffer(GL_ARRAY_BUFFER, 0);
diff --git a/canvas/source/opengl/ogl_canvascustomsprite.hxx 
b/canvas/source/opengl/ogl_canvascustomsprite.hxx
index f08af7e..46b59fe 100644
--- a/canvas/source/opengl/ogl_canvascustomsprite.hxx
+++ b/canvas/source/opengl/ogl_canvascustomsprite.hxx
@@ -92,20 +92,26 @@ namespace oglcanvas
         ::basegfx::B2DPoint                               maPosition;
         double                                            mfAlpha;
         double                                            mfPriority;
+
         GLuint                                            m_vertexBuffer;
         GLuint                                            m_uvBuffer;
-        GLuint                                            m_texManProgID;
-        GLuint                                            m_texProgID;
+
+
         GLuint                                            m_simpleProgID;
-        GLuint                                            m_manTexUnf;
-        GLuint                                            m_manPosAttrb;
         GLuint                                            m_simpleUvAttrb;
         GLuint                                            m_simplePosAttrb;
-        GLuint                                            m_texPosAttrb;
-        GLuint                                            m_manCordUnf;
-        GLuint                                            m_texColorUnf;
         GLuint                                            m_simpleTexUnf;
+        GLuint                                            m_simpleColorUnf;
+
+        GLuint                                            m_manTexUnf;
+        GLuint                                            m_manPosAttrb;
+        GLuint                                            m_manCordUnf;
+        GLuint                                            m_manColorUnf;
 
+        GLuint                                            m_texPosAttrb;
+        GLuint                                            m_texColorUnf;
+        GLuint                                            m_texManProgID;
+        GLuint                                            m_texProgID;
     };
 }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to