diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2016-04-29 17:17:09 +0900 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2016-04-30 03:08:30 +0000 |
commit | 540fee2dc7553152914f7f1d8a41921e765087ef (patch) | |
tree | 6ceeb3c6ccdd1fdcc9e76fabbe82413fbd9673b4 /vcl/inc/opengl | |
parent | a57d048f88ba6cac3ce1550e2a8a143a8887eb05 (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.hxx | 12 |
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; } |