Kaydet (Commit) 97bf7c6c authored tarafından Lubosz Sarnecki's avatar Lubosz Sarnecki Kaydeden (comit) Tomaž Vajngerl

vcl OpenGL program: Cache mvp matrix to reduce ~200 api calls per frame.

(cherry picked from commit e3cd97ce0b2e153b8b6812cc66f2e7d33504a7da)

Conflicts:
	vcl/opengl/program.cxx

Change-Id: I86ae50bd8d2148e86a6c8fc0821d3e2bc29a0cd4
üst 4f0bb271
...@@ -40,6 +40,11 @@ private: ...@@ -40,6 +40,11 @@ private:
TextureList maTextures; TextureList maTextures;
bool mbBlending; bool mbBlending;
float mfLastWidth;
float mfLastHeight;
float mfLastPixelOffset;
OpenGLProgram(const OpenGLProgram &) SAL_DELETED_FUNCTION; OpenGLProgram(const OpenGLProgram &) SAL_DELETED_FUNCTION;
public: public:
OpenGLProgram(); OpenGLProgram();
......
...@@ -22,7 +22,10 @@ OpenGLProgram::OpenGLProgram() : ...@@ -22,7 +22,10 @@ OpenGLProgram::OpenGLProgram() :
mnTexCoordAttrib( SAL_MAX_UINT32 ), mnTexCoordAttrib( SAL_MAX_UINT32 ),
mnAlphaCoordAttrib( SAL_MAX_UINT32 ), mnAlphaCoordAttrib( SAL_MAX_UINT32 ),
mnMaskCoordAttrib( 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( ...@@ -247,6 +250,14 @@ void OpenGLProgram::SetTransform(
void OpenGLProgram::ApplyMatrix(float fWidth, float fHeight, float fPixelOffset) 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"); OString sProjectionMatrix("mvp");
GLuint nUniform = GetUniformLocation(sProjectionMatrix); GLuint nUniform = GetUniformLocation(sProjectionMatrix);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment