summaryrefslogtreecommitdiffstats
path: root/src/render/backend/renderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/render/backend/renderer.cpp')
-rw-r--r--src/render/backend/renderer.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/render/backend/renderer.cpp b/src/render/backend/renderer.cpp
index 213598b6b..f11f0e2df 100644
--- a/src/render/backend/renderer.cpp
+++ b/src/render/backend/renderer.cpp
@@ -523,6 +523,7 @@ void Renderer::enqueueRenderView(Render::RenderView *renderView, int submitOrder
{
// qDebug() << Q_FUNC_INFO << QThread::currentThread();
m_renderQueues->queueRenderView(renderView, submitOrder);
+
if (m_renderQueues->isFrameQueueComplete()) {
// We can increment the currentProcessingFrameIndex here
// That index will then be used by RenderViewJobs to know which QFrameAllocator to use
@@ -765,6 +766,7 @@ void Renderer::executeCommands(const QVector<RenderCommand *> &commands)
//// Draw Calls
// Set state
+ RenderStateSet *globalState = m_graphicsContext->currentStateSet();
if (command->m_stateSet != Q_NULLPTR)
m_graphicsContext->setCurrentStateSet(command->m_stateSet);
@@ -791,6 +793,10 @@ void Renderer::executeCommands(const QVector<RenderCommand *> &commands)
m_graphicsContext->drawArrays(primType, 0, primCount);
}
+ // Reset state if overridden by pass state
+ if (command->m_stateSet != Q_NULLPTR)
+ m_graphicsContext->setCurrentStateSet(globalState);
+
int err = m_graphicsContext->openGLContext()->functions()->glGetError();
if (err)
qCWarning(Rendering) << "GL error after drawing mesh:" << QString::number(err, 16);