From 657d33acba8acc1fd6b000ec74da9f4f3a48b743 Mon Sep 17 00:00:00 2001 From: Gunnar Sletta Date: Wed, 27 Apr 2016 12:57:00 +0200 Subject: Reset clipping state after a completed frame. Failing to do so, will result in clip being wrong on the following frames. Change-Id: If3a5f9c7ecb056d6cf2c50fe2f326abeaad0ddb8 Reviewed-by: Robin Burchell --- customcontext/renderer/qsgbasicclipmanager_p.h | 9 +++++++++ customcontext/renderer/simplerenderer.cpp | 1 + 2 files changed, 10 insertions(+) diff --git a/customcontext/renderer/qsgbasicclipmanager_p.h b/customcontext/renderer/qsgbasicclipmanager_p.h index e75d5a9..76c06d0 100644 --- a/customcontext/renderer/qsgbasicclipmanager_p.h +++ b/customcontext/renderer/qsgbasicclipmanager_p.h @@ -78,6 +78,15 @@ public: template void activate(const QSGClipNode *clip, ClipRenderer *clipRenderer, ShaderStateTracker *tracker, QOpenGLFunctions *gl); + void reset(QOpenGLFunctions *gl) { + if (m_clipType & StencilClip) + gl->glDisable(GL_STENCIL_TEST); + if (m_clipType & ScissorClip) + gl->glDisable(GL_SCISSOR_TEST); + m_clipType = NoClip; + m_currentClip = 0; + } + ClipType clipType() const { return m_clipType; } const QSGClipNode *currentClip() const { return m_currentClip; } diff --git a/customcontext/renderer/simplerenderer.cpp b/customcontext/renderer/simplerenderer.cpp index 037c82c..00e0f58 100644 --- a/customcontext/renderer/simplerenderer.cpp +++ b/customcontext/renderer/simplerenderer.cpp @@ -434,6 +434,7 @@ void Renderer::renderElements() } } + m_clipManager->reset(this); m_shaderManager->endFrame(this); } -- cgit v1.2.3