summaryrefslogtreecommitdiffstats
path: root/src/runtime/dragon/qdragonrenderaspect.cpp
diff options
context:
space:
mode:
authorMäättä Antti <antti.maatta@qt.io>2019-01-21 09:26:06 +0200
committerAntti Määttä <antti.maatta@qt.io>2019-02-21 12:32:26 +0000
commit7e60b8df4e2c7e97e7ebb97974d7a0481c89b0a6 (patch)
treedf7d77547bc072e960dfa16f6dc51a31bef6554e /src/runtime/dragon/qdragonrenderaspect.cpp
parent450840717b15001be5b527bdd88eeb9b9bf6caee (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.cpp16
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> &parameters,
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;