diff options
author | Määttä Antti <antti.maatta@qt.io> | 2019-01-21 09:26:06 +0200 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2019-02-21 12:32:26 +0000 |
commit | 7e60b8df4e2c7e97e7ebb97974d7a0481c89b0a6 (patch) | |
tree | df7d77547bc072e960dfa16f6dc51a31bef6554e /src/runtime/dragon/qdragonrenderaspect.cpp | |
parent | 450840717b15001be5b527bdd88eeb9b9bf6caee (diff) |
Add support for scene2d in dragon
Task-number: QT3DS-2886
Change-Id: Iaaf64365af05de884966fc82319fbf9af93e971d
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Svenn-Arne Dragly <svenn-arne.dragly@qt.io>
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
Diffstat (limited to 'src/runtime/dragon/qdragonrenderaspect.cpp')
-rw-r--r-- | src/runtime/dragon/qdragonrenderaspect.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/runtime/dragon/qdragonrenderaspect.cpp b/src/runtime/dragon/qdragonrenderaspect.cpp index c087ed7..86b5c0e 100644 --- a/src/runtime/dragon/qdragonrenderaspect.cpp +++ b/src/runtime/dragon/qdragonrenderaspect.cpp @@ -81,6 +81,7 @@ #include <Qt3DRender/qtechniquefilter.h> #include <Qt3DRender/qtexture.h> #include <Qt3DRender/qviewport.h> +#include <Qt3DQuickScene2D/qscene2d.h> // Frame graph nodes #include <private/dragonblitframebuffer_p.h> @@ -101,6 +102,7 @@ #include <private/dragonstatesetnode_p.h> #include <private/dragontechniquefilternode_p.h> #include <private/dragonviewportnode_p.h> +#include <private/dragonscene2d_p.h> // Jobs #include <private/dragonshaderjobs_p.h> @@ -213,6 +215,7 @@ QDragonRenderAspect::QDragonRenderAspect(Renderer::RenderType renderType) registerBackendType<QShaderData>(m_shaderDatas); registerBackendType<QShaderProgram>(m_shaders); registerBackendType<QRenderState>(m_renderStates); + registerBackendType<Quick::QScene2D>(m_scene2ds); // Custom functors registerBackendType<QRenderSettings>(QSharedPointer<RenderSettingsFunctor>::create(this)); @@ -285,6 +288,13 @@ QDragonRenderAspect::QDragonRenderAspect(Renderer::RenderType renderType) m_textures, m_loadTextureImages); + m_updateScene2Ds = TaskPtr<ValueContainer<Scene2DState>>::create(updateScene2Ds, + Self, + m_scene2ds, + m_snaggedTexturesSource, + m_renderTargetOutputs, + m_shareContextSource); + // TODO might as well upload them as well... m_loadBuffers = TaskPtr<LoadedBuffers>::create(loadBuffers, Self, m_buffers); @@ -410,6 +420,7 @@ QDragonRenderAspect::QDragonRenderAspect(Renderer::RenderType renderType) const ValueContainer<Attribute> &attributes, const ValueContainer<Parameter> ¶meters, const ValueContainer<Matrix4x4> &worldTransforms, + const ValueContainer<Scene2DState> &scene2ds, const ValueContainer<CameraMatrices> &renderViewCameraMatrices) { // TODO how do we handle incremental changes? // TODO if nothing changed, do we really need to upload again? @@ -427,6 +438,7 @@ QDragonRenderAspect::QDragonRenderAspect(Renderer::RenderType renderType) data.parameters = parameters; data.worldTransforms = worldTransforms; data.frameGraph = frameGraph; + data.scene2ds = scene2ds; m_renderer->addLatestData(data); return true; }; @@ -441,6 +453,7 @@ QDragonRenderAspect::QDragonRenderAspect(Renderer::RenderType renderType) m_attributes, m_parameters, m_calculateWorldTransforms, + m_updateScene2Ds, cameraMatrices); // TODO would be nice to have a taskmanager that all the above are put into @@ -450,6 +463,7 @@ QDragonRenderAspect::QDragonRenderAspect(Renderer::RenderType renderType) m_printTransforms, m_loadTextures, m_loadTextureImages, + m_updateScene2Ds, m_loadBuffers, m_generateFrameGraph, m_buildRenderViews, @@ -515,6 +529,8 @@ QVector<Qt3DCore::QAspectJobPtr> QDragonRenderAspect::jobsToExecute(qint64 time) m_rootFrameGraphNodeSource->setInput(m_renderSettings->activeFrameGraphID()); m_rootEntitySource->setInput(rootEntityId()); + m_shareContextSource->setInput(m_renderer->shareContext()); + m_snaggedTexturesSource->setInput(&m_renderer->textures()); // TODO add all to a task container that generates this return m_jobs; |