diff options
Diffstat (limited to 'src/render/backend/renderer.cpp')
-rw-r--r-- | src/render/backend/renderer.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/render/backend/renderer.cpp b/src/render/backend/renderer.cpp index f11f0e2df..78805c47e 100644 --- a/src/render/backend/renderer.cpp +++ b/src/render/backend/renderer.cpp @@ -596,8 +596,9 @@ void Renderer::submitRenderViews(int maxFrameCount) if (renderViewsCount <= 0) continue; + QColor previousClearColor = renderViews.first()->clearColor(); // Bail out if we cannot make the OpenGL context current (e.g. if the window has been destroyed) - if (!m_graphicsContext->beginDrawing(m_surface, renderViews.first()->clearColor())) { + if (!m_graphicsContext->beginDrawing(m_surface, previousClearColor)) { qDeleteAll(renderViews); m_renderQueues->popFrameQueue(); break; @@ -622,6 +623,13 @@ void Renderer::submitRenderViews(int maxFrameCount) // Activate RenderTarget m_graphicsContext->activateRenderTarget(m_renderTargetManager->data(renderViews[i]->renderTargetHandle()), renderViews[i]->attachmentPack(), defaultFboId); + + // Set clear color if different + if (previousClearColor != renderViews[i]->clearColor()) { + previousClearColor = renderViews[i]->clearColor(); + m_graphicsContext->clearColor(previousClearColor); + } + // Clear BackBuffer m_graphicsContext->clearBackBuffer(renderViews[i]->clearBuffer()); // Set the Viewport |