diff options
author | Antti Määttä <antti.maatta@qt.io> | 2020-08-17 09:13:07 +0300 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2020-08-17 10:21:10 +0300 |
commit | d7590646d6c1fe21aa9cbbaf81c9a970bc8ca1dc (patch) | |
tree | fb69f5147232c55df9c450382c30a19576ffc777 | |
parent | e55a7e663391ba4ecc672feddd959f5139215276 (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.cpp | 7 |
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(); |