summaryrefslogtreecommitdiffstats
path: root/examples/qt3d/examples-common/qt3dwindow.cpp
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-01-17 13:54:04 +0000
committerPaul Lemire <paul.lemire@kdab.com>2016-01-18 08:31:58 +0000
commit465bbed1085c57d1209aff33ce1fbd693b4e490f (patch)
tree9320d54071bcce7315b1dc8392cd87f5e55be0cc /examples/qt3d/examples-common/qt3dwindow.cpp
parent67f6661f41e180c1508684925930c25102596353 (diff)
Always create a QFrameGraph component and forward renderer
This will allow to easily set for e.g. clear color from a C++ app even before the window is shown. Change-Id: I343b68d2fd1a3a37f99f3437afb900597fe02390 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'examples/qt3d/examples-common/qt3dwindow.cpp')
-rw-r--r--examples/qt3d/examples-common/qt3dwindow.cpp37
1 files changed, 22 insertions, 15 deletions
diff --git a/examples/qt3d/examples-common/qt3dwindow.cpp b/examples/qt3d/examples-common/qt3dwindow.cpp
index 56533aeae..a7728771e 100644
--- a/examples/qt3d/examples-common/qt3dwindow.cpp
+++ b/examples/qt3d/examples-common/qt3dwindow.cpp
@@ -56,7 +56,8 @@ Qt3DWindow::Qt3DWindow(QScreen *screen)
, m_renderAspect(new Qt3DRender::QRenderAspect)
, m_inputAspect(new Qt3DInput::QInputAspect)
, m_logicAspect(new Qt3DLogic::QLogicAspect)
- , m_frameGraph(nullptr)
+ , m_frameGraph(new Qt3DRender::QFrameGraph)
+ , m_forwardRenderer(new Qt3DRender::QForwardRenderer)
, m_defaultCamera(new Qt3DRender::QCamera)
, m_root(new Qt3DCore::QEntity)
, m_userRoot(nullptr)
@@ -80,6 +81,10 @@ Qt3DWindow::Qt3DWindow(QScreen *screen)
m_aspectEngine->registerAspect(m_renderAspect);
m_aspectEngine->registerAspect(m_inputAspect);
m_aspectEngine->registerAspect(m_logicAspect);
+
+ m_forwardRenderer->setCamera(m_defaultCamera);
+ m_forwardRenderer->setSurface(this);
+ m_frameGraph->setActiveFrameGraph(m_forwardRenderer);
}
Qt3DWindow::Qt3DWindow(QWindow *parent)
@@ -88,7 +93,7 @@ Qt3DWindow::Qt3DWindow(QWindow *parent)
, m_renderAspect(new Qt3DRender::QRenderAspect)
, m_inputAspect(new Qt3DInput::QInputAspect)
, m_logicAspect(new Qt3DLogic::QLogicAspect)
- , m_frameGraph(nullptr)
+ , m_frameGraph(new Qt3DRender::QFrameGraph)
, m_defaultCamera(new Qt3DRender::QCamera)
, m_root(new Qt3DCore::QEntity)
, m_userRoot(nullptr)
@@ -111,7 +116,12 @@ Qt3DWindow::Qt3DWindow(QWindow *parent)
m_aspectEngine->registerAspect(m_renderAspect);
m_aspectEngine->registerAspect(m_inputAspect);
- m_aspectEngine->registerAspect(m_logicAspect);}
+ m_aspectEngine->registerAspect(m_logicAspect);
+
+ m_forwardRenderer->setCamera(m_defaultCamera);
+ m_forwardRenderer->setSurface(this);
+ m_frameGraph->setActiveFrameGraph(m_forwardRenderer);
+}
Qt3DWindow::~Qt3DWindow()
{
@@ -135,14 +145,19 @@ void Qt3DWindow::setRootEntity(Qt3DCore::QEntity *root)
m_userRoot = root;
}
-void Qt3DWindow::setFrameGraph(Qt3DRender::QFrameGraph *frameGraph)
+void Qt3DWindow::setActiveFrameGraph(Qt3DRender::QFrameGraphNode *activeFrameGraph)
{
- m_frameGraph = frameGraph;
+ m_frameGraph->setActiveFrameGraph(activeFrameGraph);
}
-Qt3DRender::QFrameGraph *Qt3DWindow::frameGraph() const
+Qt3DRender::QFrameGraphNode *Qt3DWindow::activeFrameGraph() const
{
- return m_frameGraph;
+ return m_frameGraph->activeFrameGraph();
+}
+
+Qt3DRender::QForwardRenderer *Qt3DWindow::defaultFramegraph() const
+{
+ return m_forwardRenderer;
}
Qt3DRender::QCamera *Qt3DWindow::camera() const
@@ -156,14 +171,6 @@ void Qt3DWindow::showEvent(QShowEvent *e)
if (m_userRoot != nullptr)
m_userRoot->setParent(m_root);
- if (m_frameGraph == nullptr) {
- m_frameGraph = new Qt3DRender::QFrameGraph;
- Qt3DRender::QForwardRenderer *forwardRenderer = new Qt3DRender::QForwardRenderer;
- forwardRenderer->setCamera(m_defaultCamera);
- forwardRenderer->setSurface(this);
- m_frameGraph->setActiveFrameGraph(forwardRenderer);
- }
-
// TODO: Get rid of this
QVariantMap data;
data.insert(QStringLiteral("surface"), QVariant::fromValue(static_cast<QSurface *>(this)));