summaryrefslogtreecommitdiff
path: root/vcl/inc/opengl
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2016-04-29 17:17:09 +0900
committerTomaž Vajngerl <quikee@gmail.com>2016-04-30 03:08:30 +0000
commit540fee2dc7553152914f7f1d8a41921e765087ef (patch)
tree6ceeb3c6ccdd1fdcc9e76fabbe82413fbd9673b4 /vcl/inc/opengl
parenta57d048f88ba6cac3ce1550e2a8a143a8887eb05 (diff)
opengl: track the state of glViewport
We don't want to set the viewport over and over again. Change-Id: I60b84a009d4058743e30587616604f9b6fc0f601 Reviewed-on: https://gerrit.libreoffice.org/24507 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'vcl/inc/opengl')
-rw-r--r--vcl/inc/opengl/RenderState.hxx12
1 files changed, 12 insertions, 0 deletions
diff --git a/vcl/inc/opengl/RenderState.hxx b/vcl/inc/opengl/RenderState.hxx
index eeac1a508d3e..ac215a8d97c1 100644
--- a/vcl/inc/opengl/RenderState.hxx
+++ b/vcl/inc/opengl/RenderState.hxx
@@ -123,10 +123,22 @@ class RenderState
ScissorState maScissor;
StencilState maStencil;
+ Rectangle maCurrentViewport;
+
public:
RenderState()
{}
+ void viewport(Rectangle aViewPort)
+ {
+ if (aViewPort != maCurrentViewport)
+ {
+ glViewport(aViewPort.Left(), aViewPort.Top(), aViewPort.GetWidth(), aViewPort.GetHeight());
+ CHECK_GL_ERROR();
+ maCurrentViewport = aViewPort;
+ }
+ }
+
TextureState& texture() { return maTexture; }
ScissorState& scissor() { return maScissor; }
StencilState& stencil() { return maStencil; }