diff options
author | Wieland Hagen <wieland.hagen@kdab.com> | 2016-02-17 17:53:42 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2016-03-09 13:19:39 +0000 |
commit | c042228267dc4bb05ee3e6d53074c7218d1e7054 (patch) | |
tree | aacbe10f48912e9324526e64d722377143d542cc /src/render/frontend | |
parent | 807a25d74550faf42ed79dfe234b5f1ce3380cf4 (diff) |
Drop QFrameGraph in favor of QRenderSettings
QFrameGraph did store just the Frame Graph Root, and was not configurable
at runtime. This functionality has been moved to QRenderSettings.
The renderer now gets the scene graph root directly from QRenderSettings.
Change-Id: I3012eb96b8073717f96f5e42374859a3f4a89bfc
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/render/frontend')
-rw-r--r-- | src/render/frontend/qrenderaspect.cpp | 2 | ||||
-rw-r--r-- | src/render/frontend/qrendersettings.cpp | 22 | ||||
-rw-r--r-- | src/render/frontend/qrendersettings.h | 7 | ||||
-rw-r--r-- | src/render/frontend/qrendersettings_p.h | 1 |
4 files changed, 30 insertions, 2 deletions
diff --git a/src/render/frontend/qrenderaspect.cpp b/src/render/frontend/qrenderaspect.cpp index c5c3fc329..ff53db362 100644 --- a/src/render/frontend/qrenderaspect.cpp +++ b/src/render/frontend/qrenderaspect.cpp @@ -48,7 +48,6 @@ #include <Qt3DRender/qabstractsceneloader.h> #include <Qt3DRender/qcameraselector.h> -#include <Qt3DRender/qframegraph.h> #include <Qt3DRender/qlayer.h> #include <Qt3DRender/qlayerfilter.h> #include <Qt3DRender/qmaterial.h> @@ -272,7 +271,6 @@ void QRenderAspect::registerBackendTypes() registerBackendType<QLayerFilter>(QBackendNodeMapperPtr(new Render::FrameGraphNodeFunctor<Render::LayerFilterNode, QLayerFilter>(d->m_renderer, d->m_nodeManagers->frameGraphManager()))); registerBackendType<QSortPolicy>(QBackendNodeMapperPtr(new Render::FrameGraphNodeFunctor<Render::SortPolicy, QSortPolicy>(d->m_renderer, d->m_nodeManagers->frameGraphManager()))); registerBackendType<QFrameGraphSelector>(QBackendNodeMapperPtr(new Render::FrameGraphNodeFunctor<Render::FrameGraphSubtreeSelector, QFrameGraphSelector>(d->m_renderer, d->m_nodeManagers->frameGraphManager()))); - registerBackendType<QFrameGraph>(QBackendNodeMapperPtr(new Render::FrameGraphComponentFunctor(d->m_renderer))); registerBackendType<QParameter>(QBackendNodeMapperPtr(new Render::NodeFunctor<Render::Parameter, Render::ParameterManager>(d->m_renderer, d->m_nodeManagers->parameterManager()))); registerBackendType<QShaderData>(QBackendNodeMapperPtr(new Render::RenderShaderDataFunctor(d->m_renderer, d->m_nodeManagers))); registerBackendType<QAbstractTextureImage>(QBackendNodeMapperPtr(new Render::TextureImageFunctor(d->m_renderer, d->m_nodeManagers->textureManager(), d->m_nodeManagers->textureImageManager(), d->m_nodeManagers->textureDataManager()))); diff --git a/src/render/frontend/qrendersettings.cpp b/src/render/frontend/qrendersettings.cpp index 06dfa238d..bf6537c84 100644 --- a/src/render/frontend/qrendersettings.cpp +++ b/src/render/frontend/qrendersettings.cpp @@ -37,6 +37,7 @@ ** ****************************************************************************/ +#include "qframegraphnode.h" #include "qrendersettings.h" #include "qrendersettings_p.h" @@ -46,6 +47,7 @@ namespace Qt3DRender { QRenderSettingsPrivate::QRenderSettingsPrivate() : Qt3DCore::QComponentPrivate() + , m_activeFrameGraph(Q_NULLPTR) , m_pickMethod(QRenderSettings::BoundingVolumePicking) , m_pickResultMode(QRenderSettings::NearestPick) { @@ -66,6 +68,12 @@ QRenderSettings::~QRenderSettings() QNode::cleanup(); } +QFrameGraphNode *QRenderSettings::activeFrameGraph() const +{ + Q_D(const QRenderSettings); + return d->m_activeFrameGraph; +} + QRenderSettings::PickMethod QRenderSettings::pickMethod() const { Q_D(const QRenderSettings); @@ -78,6 +86,18 @@ QRenderSettings::PickResultMode QRenderSettings::pickResultMode() const return d->m_pickResultMode; } +void QRenderSettings::setActiveFrameGraph(QFrameGraphNode *activeFrameGraph) +{ + Q_D(QRenderSettings); + if (d->m_activeFrameGraph == activeFrameGraph) + return; + + if (activeFrameGraph != Q_NULLPTR && !activeFrameGraph->parent()) + activeFrameGraph->setParent(this); + d->m_activeFrameGraph = activeFrameGraph; + emit activeFrameGraphChanged(activeFrameGraph); +} + void QRenderSettings::setPickMethod(QRenderSettings::PickMethod pickMethod) { Q_D(QRenderSettings); @@ -102,6 +122,8 @@ void QRenderSettings::copy(const QNode *ref) { QComponent::copy(ref); const QRenderSettings *object = static_cast<const QRenderSettings *>(ref); + setActiveFrameGraph(qobject_cast<QFrameGraphNode *>(QNode::clone(object->activeFrameGraph()))); + d_func()->m_pickMethod = object->d_func()->m_pickMethod; d_func()->m_pickResultMode = object->d_func()->m_pickResultMode; } diff --git a/src/render/frontend/qrendersettings.h b/src/render/frontend/qrendersettings.h index 5d31189b6..9314b5048 100644 --- a/src/render/frontend/qrendersettings.h +++ b/src/render/frontend/qrendersettings.h @@ -47,6 +47,7 @@ QT_BEGIN_NAMESPACE namespace Qt3DRender { +class QFrameGraphNode; class QRenderSettingsPrivate; class QT3DRENDERSHARED_EXPORT QRenderSettings : public Qt3DCore::QComponent @@ -55,6 +56,9 @@ class QT3DRENDERSHARED_EXPORT QRenderSettings : public Qt3DCore::QComponent Q_PROPERTY(PickMethod pickMethod READ pickMethod WRITE setPickMethod NOTIFY pickMethodChanged) Q_PROPERTY(PickResultMode pickResultMode READ pickResultMode WRITE setPickResultMode NOTIFY pickResultModeChanged) + Q_PROPERTY(Qt3DRender::QFrameGraphNode *activeFrameGraph READ activeFrameGraph WRITE setActiveFrameGraph NOTIFY activeFrameGraphChanged) + Q_CLASSINFO("DefaultProperty", "activeFrameGraph") + public: explicit QRenderSettings(Qt3DCore::QNode *parent = nullptr); ~QRenderSettings(); @@ -73,14 +77,17 @@ public: PickMethod pickMethod() const; PickResultMode pickResultMode() const; + QFrameGraphNode *activeFrameGraph() const; public Q_SLOTS: void setPickMethod(PickMethod pickMethod); void setPickResultMode(PickResultMode pickResultMode); + void setActiveFrameGraph(QFrameGraphNode *activeFrameGraph); Q_SIGNALS: void pickMethodChanged(PickMethod pickMethod); void pickResultModeChanged(PickResultMode pickResult); + void activeFrameGraphChanged(QFrameGraphNode *activeFrameGraph); protected: Q_DECLARE_PRIVATE(QRenderSettings) diff --git a/src/render/frontend/qrendersettings_p.h b/src/render/frontend/qrendersettings_p.h index a3d98555d..e8d31a70b 100644 --- a/src/render/frontend/qrendersettings_p.h +++ b/src/render/frontend/qrendersettings_p.h @@ -63,6 +63,7 @@ class QRenderSettingsPrivate : public Qt3DCore::QComponentPrivate public: QRenderSettingsPrivate(); + QFrameGraphNode *m_activeFrameGraph; QRenderSettings::PickMethod m_pickMethod; QRenderSettings::PickResultMode m_pickResultMode; }; |