summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vcl/inc/opengl/program.hxx5
-rw-r--r--vcl/opengl/program.cxx13
2 files changed, 17 insertions, 1 deletions
diff --git a/vcl/inc/opengl/program.hxx b/vcl/inc/opengl/program.hxx
index 7ac1936e1936..8289a56de4bf 100644
--- a/vcl/inc/opengl/program.hxx
+++ b/vcl/inc/opengl/program.hxx
@@ -40,6 +40,11 @@ private:
TextureList maTextures;
bool mbBlending;
+ float mfLastWidth;
+ float mfLastHeight;
+ float mfLastPixelOffset;
+
+
OpenGLProgram(const OpenGLProgram &) SAL_DELETED_FUNCTION;
public:
OpenGLProgram();
diff --git a/vcl/opengl/program.cxx b/vcl/opengl/program.cxx
index ede054816d5f..b1d3cfe8291d 100644
--- a/vcl/opengl/program.cxx
+++ b/vcl/opengl/program.cxx
@@ -22,7 +22,10 @@ OpenGLProgram::OpenGLProgram() :
mnTexCoordAttrib( SAL_MAX_UINT32 ),
mnAlphaCoordAttrib( SAL_MAX_UINT32 ),
mnMaskCoordAttrib( SAL_MAX_UINT32 ),
- mbBlending( false )
+ mbBlending( false ),
+ mfLastWidth(0.0),
+ mfLastHeight(0.0),
+ mfLastPixelOffset(0.0)
{
}
@@ -247,6 +250,14 @@ void OpenGLProgram::SetTransform(
void OpenGLProgram::ApplyMatrix(float fWidth, float fHeight, float fPixelOffset)
{
+
+ if (mfLastWidth == fWidth && mfLastHeight == fHeight && mfLastPixelOffset == fPixelOffset)
+ return;
+
+ mfLastWidth = fWidth;
+ mfLastHeight = fHeight;
+ mfLastPixelOffset = fPixelOffset;
+
OString sProjectionMatrix("mvp");
GLuint nUniform = GetUniformLocation(sProjectionMatrix);