summaryrefslogtreecommitdiffstats
path: root/src/render/frontend
diff options
context:
space:
mode:
authorWieland Hagen <wieland.hagen@kdab.com>2016-02-17 17:53:42 +0100
committerSean Harmer <sean.harmer@kdab.com>2016-03-09 13:19:39 +0000
commitc042228267dc4bb05ee3e6d53074c7218d1e7054 (patch)
treeaacbe10f48912e9324526e64d722377143d542cc /src/render/frontend
parent807a25d74550faf42ed79dfe234b5f1ce3380cf4 (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.cpp2
-rw-r--r--src/render/frontend/qrendersettings.cpp22
-rw-r--r--src/render/frontend/qrendersettings.h7
-rw-r--r--src/render/frontend/qrendersettings_p.h1
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;
};