summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntti Määttä <antti.maatta@qt.io>2020-08-17 09:13:07 +0300
committerAntti Määttä <antti.maatta@qt.io>2020-08-17 10:21:10 +0300
commitd7590646d6c1fe21aa9cbbaf81c9a970bc8ca1dc (patch)
treefb69f5147232c55df9c450382c30a19576ffc777
parente55a7e663391ba4ecc672feddd959f5139215276 (diff)
Fix white flash in first frame
Run render tasks also before prepare step so that the images are loaded for it. The prepare step doesn't work properly if the images have not been loaded and generates wrong materials for first frame. Task-number: QT3DS-4131 Change-Id: I7a3f5fb08f915a31dd291c3c147d8f078ecee908 Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
-rw-r--r--src/engine/Qt3DSRenderRuntimeBinding.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/engine/Qt3DSRenderRuntimeBinding.cpp b/src/engine/Qt3DSRenderRuntimeBinding.cpp
index e099e47..2a6cbde 100644
--- a/src/engine/Qt3DSRenderRuntimeBinding.cpp
+++ b/src/engine/Qt3DSRenderRuntimeBinding.cpp
@@ -1559,8 +1559,9 @@ struct Qt3DSRenderSceneManager : public Q3DStudio::ISceneManager,
m_Context->m_RenderContext->ResetBlendState();
}
- // How exactly does this work, I have no idea.
- // Should we only render the first scene and not every scene, perhaps?
+ // Run render tasks before prepare step
+ m_Context->m_Context->RunRenderTasks();
+
bool wasDirty = false;
if (theFirstScene)
wasDirty = theFirstScene->PrepareForRender();
@@ -1569,6 +1570,8 @@ struct Qt3DSRenderSceneManager : public Q3DStudio::ISceneManager,
m_Context->m_RenderContext->Clear(qt3ds::render::NVRenderClearFlags(
NVRenderClearValues::Color | NVRenderClearValues::Depth));
}
+
+ // Run render tasks after prepare step
m_Context->m_Context->RunRenderTasks();
if (theFirstScene)
theFirstScene->Render();