diff options
-rw-r--r-- | vcl/inc/opengl/program.hxx | 5 | ||||
-rw-r--r-- | vcl/opengl/program.cxx | 13 |
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); |