diff options
author | Antti Määttä <antti.maatta@qt.io> | 2019-04-12 13:54:35 +0300 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2019-05-03 09:34:00 +0000 |
commit | 73ebd0f9cf6376a762c96d37ab6046fefd8d4789 (patch) | |
tree | e415e2af7e30002563422ba9cbec02f3276b013e /src/Runtime/Source/runtimerender/Qt3DSRenderContextCore.cpp | |
parent | ccc70e48e576c0dffc289df4850a909fb6fef83d (diff) |
Implement dynamic loading of slide resources
Implements loading of textures and images during runtime instead of load
time.
- Images which are not part of any slide are loaded at load time
- Master slide images are always loaded at load time
- Images used in a slide are loaded when the slide is entered
- Images are unloaded when slide is exited and any other slide does not
use them
Task-number: QT3DS-3208
Change-Id: I7a827a5e828908efd2b104fe25374c66958319d2
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/Runtime/Source/runtimerender/Qt3DSRenderContextCore.cpp')
-rw-r--r-- | src/Runtime/Source/runtimerender/Qt3DSRenderContextCore.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/Runtime/Source/runtimerender/Qt3DSRenderContextCore.cpp b/src/Runtime/Source/runtimerender/Qt3DSRenderContextCore.cpp index 3c940805..207059fc 100644 --- a/src/Runtime/Source/runtimerender/Qt3DSRenderContextCore.cpp +++ b/src/Runtime/Source/runtimerender/Qt3DSRenderContextCore.cpp @@ -126,7 +126,8 @@ struct SRenderContextCore : public IQt3DSRenderContextCore IRenderPluginManagerCore &GetRenderPluginCore() override { return *m_RenderPluginManagerCore; } IPathManagerCore &GetPathManagerCore() override { return *m_PathManagerCore; } IQt3DSRenderContext &CreateRenderContext(NVRenderContext &inContext, - const char8_t *inPrimitivesDirectory) override; + const char8_t *inPrimitivesDirectory, + bool delayedLoading) override; void SetTextRendererCore(ITextRendererCore &inRenderer) override { m_TextRenderer = inRenderer; } ITextRendererCore *GetTextRendererCore() override { return m_TextRenderer.mPtr; } void setDistanceFieldRenderer(ITextRendererCore &inRenderer) override @@ -263,7 +264,7 @@ struct SRenderContext : public IQt3DSRenderContext bool m_AuthoringMode; SRenderContext(NVRenderContext &ctx, IQt3DSRenderContextCore &inCore, - const char8_t *inApplicationDirectory) + const char8_t *inApplicationDirectory, bool delayedLoading) : m_RenderContext(ctx) , m_CoreContext(inCore) , m_StringTable(ctx.GetStringTable()) @@ -288,6 +289,7 @@ struct SRenderContext : public IQt3DSRenderContext , m_FPS(qMakePair(0.0, 0)) , m_AuthoringMode(false) { + m_BufferManager->enableReloadableResources(delayedLoading); m_OffscreenRenderManager = IOffscreenRenderManager::CreateOffscreenRenderManager( ctx.GetAllocator(), *m_StringTable, *m_ResourceManager, *this); m_Renderer = IQt3DSRenderer::CreateRenderer(*this); @@ -827,10 +829,12 @@ struct SRenderContext : public IQt3DSRenderContext }; IQt3DSRenderContext &SRenderContextCore::CreateRenderContext(NVRenderContext &inContext, - const char8_t *inPrimitivesDirectory) + const char8_t *inPrimitivesDirectory, + bool delayedLoading) { return *QT3DS_NEW(m_Foundation.getAllocator(), SRenderContext)(inContext, *this, - inPrimitivesDirectory); + inPrimitivesDirectory, + delayedLoading); } } |