summaryrefslogtreecommitdiff
path: root/src/plugins/renderers/opengl/renderer/renderer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/renderers/opengl/renderer/renderer.cpp')
-rw-r--r--src/plugins/renderers/opengl/renderer/renderer.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/plugins/renderers/opengl/renderer/renderer.cpp b/src/plugins/renderers/opengl/renderer/renderer.cpp
index 394e08fd6..5377ab9ac 100644
--- a/src/plugins/renderers/opengl/renderer/renderer.cpp
+++ b/src/plugins/renderers/opengl/renderer/renderer.cpp
@@ -1872,6 +1872,7 @@ QVector<Qt3DCore::QAspectJobPtr> Renderer::renderBinJobs()
// Remove previous dependencies
m_cleanupJob->removeDependency(QWeakPointer<QAspectJob>());
+ const bool dirtyParametersForCurrentFrame = m_dirtyBits.marked & AbstractRenderer::ParameterDirty;
const BackendNodeDirtySet dirtyBitsForFrame = m_dirtyBits.marked | m_dirtyBits.remaining;
m_dirtyBits.marked = {};
m_dirtyBits.remaining = {};
@@ -1995,6 +1996,10 @@ QVector<Qt3DCore::QAspectJobPtr> Renderer::renderBinJobs()
m_dirtyBits.remaining = dirtyBitsForFrame & notCleared;
+ // Dirty Parameters might need 2 frames to react if the parameter references a texture
+ if (dirtyParametersForCurrentFrame)
+ m_dirtyBits.remaining |= AbstractRenderer::ParameterDirty;
+
return renderBinJobs;
}