diff options
author | Louis-Francis Ratté-Boulianne <lfrb@collabora.com> | 2014-11-28 14:56:08 -0500 |
---|---|---|
committer | Jan Holesovsky <kendy@collabora.com> | 2014-12-02 11:58:45 +0100 |
commit | 99ade27b04d3d492648eadb620cda8ea9909bf45 (patch) | |
tree | 45a9221e508acc90e73db3ad998eeaa819099686 /vcl/inc/openglgdiimpl.hxx | |
parent | 0d4233ef90a4350d63da0c9d1b98ced64b773ce0 (diff) |
vcl: Only load OpenGL shaders once for each context
Change-Id: Idbf9026c5e64ef41d4c913153dfddf36923ff7de
Diffstat (limited to 'vcl/inc/openglgdiimpl.hxx')
-rw-r--r-- | vcl/inc/openglgdiimpl.hxx | 67 |
1 files changed, 7 insertions, 60 deletions
diff --git a/vcl/inc/openglgdiimpl.hxx b/vcl/inc/openglgdiimpl.hxx index 39e39fc77752..3f3ef4ed29a1 100644 --- a/vcl/inc/openglgdiimpl.hxx +++ b/vcl/inc/openglgdiimpl.hxx @@ -25,6 +25,7 @@ #include <vcl/dllapi.h> #include "opengl/framebuffer.hxx" +#include "opengl/program.hxx" #include "opengl/texture.hxx" #include "regionband.hxx" @@ -44,6 +45,7 @@ protected: /// Pointer to the SalFrame or SalVirtualDevice SalGeometryProvider* mpParent; OpenGLFramebuffer* mpFramebuffer; + OpenGLProgram* mpProgram; // clipping vcl::Region maClipRegion; @@ -56,72 +58,17 @@ protected: SalColor mnLineColor; SalColor mnFillColor; - GLuint mnSolidProgram; - GLuint mnColorUniform; - - GLuint mnTextureProgram; - GLuint mnSamplerUniform; - - GLuint mnTransformedTextureProgram; - GLuint mnTransformedViewportUniform; - GLuint mnTransformedTransformUniform; - GLuint mnTransformedSamplerUniform; - - GLuint mnTransformedMaskedTextureProgram; - GLuint mnTransformedMaskedViewportUniform; - GLuint mnTransformedMaskedTransformUniform; - GLuint mnTransformedMaskedSamplerUniform; - GLuint mnTransformedMaskedMaskUniform; - - GLuint mnDiffTextureProgram; - GLuint mnDiffTextureUniform; - GLuint mnDiffMaskUniform; - - GLuint mnMaskedTextureProgram; - GLuint mnMaskedSamplerUniform; - GLuint mnMaskSamplerUniform; - - GLuint mnBlendedTextureProgram; - GLuint mnBlendedTextureUniform; - GLuint mnBlendedMaskUniform; - GLuint mnBlendedAlphaUniform; - - GLuint mnMaskProgram; - GLuint mnMaskUniform; - GLuint mnMaskColorUniform; - - GLuint mnLinearGradientProgram; - GLuint mnLinearGradientStartColorUniform; - GLuint mnLinearGradientEndColorUniform; - - GLuint mnRadialGradientProgram; - GLuint mnRadialGradientStartColorUniform; - GLuint mnRadialGradientEndColorUniform; - GLuint mnRadialGradientCenterUniform; - void ImplInitClipRegion(); void ImplSetClipBit( const vcl::Region& rClip, GLuint nMask ); bool CheckOffscreenTexture(); - bool CreateSolidProgram( void ); - bool CreateTextureProgram( void ); - bool CreateTransformedTextureProgram( void ); - bool CreateDiffTextureProgram( void ); - bool CreateMaskedTextureProgram( void ); - bool CreateBlendedTextureProgram( void ); - bool CreateTransformedMaskedTextureProgram( void ); - bool CreateMaskProgram( void ); - bool CreateLinearGradientProgram( void ); - bool CreateRadialGradientProgram( void ); - public: - void BeginSolid( SalColor nColor, sal_uInt8 nTransparency ); - void BeginSolid( SalColor nColor, double fTransparency ); - void BeginSolid( SalColor nColor ); - void EndSolid( void ); - void BeginInvert( void ); - void EndInvert( void ); + bool UseProgram( const OUString& rVertexShader, const OUString& rFragmentShader ); + bool UseSolid( SalColor nColor, sal_uInt8 nTransparency ); + bool UseSolid( SalColor nColor, double fTransparency ); + bool UseSolid( SalColor nColor ); + bool UseInvert(); void DrawPoint( long nX, long nY ); void DrawLine( long nX1, long nY1, long nX2, long nY2 ); |