From d7590646d6c1fe21aa9cbbaf81c9a970bc8ca1dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antti=20M=C3=A4=C3=A4tt=C3=A4?= Date: Mon, 17 Aug 2020 09:13:07 +0300 Subject: Fix white flash in first frame MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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ää --- src/engine/Qt3DSRenderRuntimeBinding.cpp | 7 +++++-- 1 file 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(); -- cgit v1.2.3