summaryrefslogtreecommitdiffstats
path: root/examples
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
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')
-rw-r--r--examples/qt3d/assimp-cpp/main.cpp10
-rw-r--r--examples/qt3d/basicshapes-cpp/main.cpp12
-rw-r--r--examples/qt3d/bigscene-cpp/main.cpp12
-rw-r--r--examples/qt3d/cpp_example/main.cpp18
-rw-r--r--examples/qt3d/custom-mesh-cpp/main.cpp11
-rw-r--r--examples/qt3d/deferred-renderer-cpp/main.cpp5
-rw-r--r--examples/qt3d/examples-common/qt3dwindow.cpp37
-rw-r--r--examples/qt3d/examples-common/qt3dwindow.h8
8 files changed, 35 insertions, 78 deletions
diff --git a/examples/qt3d/assimp-cpp/main.cpp b/examples/qt3d/assimp-cpp/main.cpp
index 660cef2fd..73b14fe56 100644
--- a/examples/qt3d/assimp-cpp/main.cpp
+++ b/examples/qt3d/assimp-cpp/main.cpp
@@ -105,6 +105,7 @@ int main(int ac, char **av)
{
QApplication app(ac, av);
Qt3DWindow view;
+ view.defaultFramegraph()->setClearColor(Qt::black);
// Root entity
Qt3DCore::QEntity *sceneRoot = new Qt3DCore::QEntity();
@@ -118,18 +119,11 @@ int main(int ac, char **av)
basicCamera->setPosition(QVector3D(0.0f, 3.5f, 25.0f));
basicCamera->setNearPlane(0.001f);
basicCamera->setFarPlane(10000.0f);
+
// For camera controls
Qt3DInput::QFirstPersonCameraController *camController = new Qt3DInput::QFirstPersonCameraController(sceneRoot);
camController->setCamera(basicCamera);
- // Forward Renderer FrameGraph
- Qt3DRender::QFrameGraph *frameGraphComponent = new Qt3DRender::QFrameGraph(sceneRoot);
- Qt3DRender::QForwardRenderer *forwardRenderer = new Qt3DRender::QForwardRenderer();
- forwardRenderer->setCamera(basicCamera);
- forwardRenderer->setClearColor(Qt::black);
- frameGraphComponent->setActiveFrameGraph(forwardRenderer);
- view.setFrameGraph(frameGraphComponent);
-
// Scene loader
Qt3DCore::QEntity *sceneLoaderEntity = new Qt3DCore::QEntity(sceneRoot);
Qt3DRender::QSceneLoader *sceneLoader = new Qt3DRender::QSceneLoader(sceneLoaderEntity);
diff --git a/examples/qt3d/basicshapes-cpp/main.cpp b/examples/qt3d/basicshapes-cpp/main.cpp
index 586647849..90c926ac3 100644
--- a/examples/qt3d/basicshapes-cpp/main.cpp
+++ b/examples/qt3d/basicshapes-cpp/main.cpp
@@ -74,6 +74,7 @@ int main(int argc, char **argv)
{
QApplication app(argc, argv);
Qt3DWindow *view = new Qt3DWindow();
+ view->defaultFramegraph()->setClearColor(QColor(QRgb(0x4d4d4f)));
QWidget *container = QWidget::createWindowContainer(view);
QSize screenSize = view->screen()->size();
container->setMinimumSize(QSize(200, 100));
@@ -106,17 +107,6 @@ int main(int argc, char **argv)
Qt3DInput::QFirstPersonCameraController *camController = new Qt3DInput::QFirstPersonCameraController(rootEntity);
camController->setCamera(cameraEntity);
- // FrameGraph
- Qt3DRender::QFrameGraph *frameGraph = new Qt3DRender::QFrameGraph();
- Qt3DRender::QForwardRenderer *forwardRenderer = new Qt3DRender::QForwardRenderer();
-
- forwardRenderer->setCamera(cameraEntity);
- forwardRenderer->setClearColor(QColor(QRgb(0x4d4d4f)));
- frameGraph->setActiveFrameGraph(forwardRenderer);
-
- // Setting the FrameGraph
- view->setFrameGraph(frameGraph);
-
// Scenemodifier
SceneModifier *modifier = new SceneModifier(rootEntity);
diff --git a/examples/qt3d/bigscene-cpp/main.cpp b/examples/qt3d/bigscene-cpp/main.cpp
index 46e4acb0b..bf2e5e5e5 100644
--- a/examples/qt3d/bigscene-cpp/main.cpp
+++ b/examples/qt3d/bigscene-cpp/main.cpp
@@ -63,13 +63,13 @@ using namespace Qt3DRender;
int main(int ac, char **av)
{
QGuiApplication app(ac, av);
-
Qt3DWindow view;
+ view.defaultFramegraph()->setClearColor(Qt::black);
+
QEntity *root = new QEntity();
// Camera
QCamera *cameraEntity = view.camera();
- cameraEntity->setObjectName(QStringLiteral("cameraEntity"));
cameraEntity->lens()->setPerspectiveProjection(45.0f, 16.0f/9.0f, 0.1f, 1000.0f);
cameraEntity->setPosition(QVector3D(0, 250.0f, 50.0f));
cameraEntity->setUpVector(QVector3D(0, 1, 0));
@@ -79,14 +79,6 @@ int main(int ac, char **av)
Qt3DInput::QFirstPersonCameraController *camController = new Qt3DInput::QFirstPersonCameraController(root);
camController->setCamera(cameraEntity);
- // FrameGraph
- QFrameGraph *frameGraph = new QFrameGraph();
- QForwardRenderer *forwardRenderer = new QForwardRenderer();
- forwardRenderer->setCamera(cameraEntity);
- forwardRenderer->setClearColor(Qt::black);
- frameGraph->setActiveFrameGraph(forwardRenderer);
- view.setFrameGraph(frameGraph);
-
const float radius = 100.0f;
const int max = 1000;
const float det = 1.0f / max;
diff --git a/examples/qt3d/cpp_example/main.cpp b/examples/qt3d/cpp_example/main.cpp
index 9e7708abf..4cf6d2f80 100644
--- a/examples/qt3d/cpp_example/main.cpp
+++ b/examples/qt3d/cpp_example/main.cpp
@@ -109,26 +109,8 @@ int main(int ac, char **av)
Qt3DInput::QFirstPersonCameraController *camController = new Qt3DInput::QFirstPersonCameraController(rootEntity);
camController->setCamera(cameraEntity);
- // FrameGraph
- Qt3DRender::QFrameGraph *frameGraph = new Qt3DRender::QFrameGraph();
- Qt3DRender::QTechniqueFilter *techniqueFilter = new Qt3DRender::QTechniqueFilter();
- Qt3DRender::QViewport *viewport = new Qt3DRender::QViewport(techniqueFilter);
- Qt3DRender::QClearBuffer *clearBuffer = new Qt3DRender::QClearBuffer(viewport);
- Qt3DRender::QCameraSelector *cameraSelector = new Qt3DRender::QCameraSelector(clearBuffer);
- (void) new Qt3DRender::QRenderPassFilter(cameraSelector);
-
- // TechiqueFilter and renderPassFilter are not implement yet
- viewport->setRect(QRectF(0, 0, 1, 1));
- clearBuffer->setBuffers(Qt3DRender::QClearBuffer::ColorDepthBuffer);
- cameraSelector->setCamera(cameraEntity);
- frameGraph->setActiveFrameGraph(techniqueFilter);
-
- // Setting the FrameGraph
- view.setFrameGraph(frameGraph);
-
// Set root object of the scene
view.setRootEntity(rootEntity);
- // Show window
view.show();
return app.exec();
diff --git a/examples/qt3d/custom-mesh-cpp/main.cpp b/examples/qt3d/custom-mesh-cpp/main.cpp
index 0b412f857..d20ded6bb 100644
--- a/examples/qt3d/custom-mesh-cpp/main.cpp
+++ b/examples/qt3d/custom-mesh-cpp/main.cpp
@@ -63,6 +63,7 @@ int main(int argc, char* argv[])
{
QGuiApplication app(argc, argv);
Qt3DWindow view;
+ view.defaultFramegraph()->setClearColor(QColor::fromRgbF(0.0, 0.5, 1.0, 1.0));
// Root entity
Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();
@@ -79,13 +80,6 @@ int main(int argc, char* argv[])
Qt3DInput::QFirstPersonCameraController *camController = new Qt3DInput::QFirstPersonCameraController(rootEntity);
camController->setCamera(cameraEntity);
- // FrameGraph
- Qt3DRender::QFrameGraph *frameGraph = new Qt3DRender::QFrameGraph();
- Qt3DRender::QForwardRenderer *forwardRenderer = new Qt3DRender::QForwardRenderer();
- forwardRenderer->setClearColor(QColor::fromRgbF(0.0, 0.5, 1.0, 1.0));
- forwardRenderer->setCamera(cameraEntity);
- frameGraph->setActiveFrameGraph(forwardRenderer);
-
// Material
Qt3DRender::QMaterial *material = new Qt3DRender::QPerVertexColorMaterial(rootEntity);
@@ -239,9 +233,6 @@ int main(int argc, char* argv[])
customMeshEntity->addComponent(transform);
customMeshEntity->addComponent(material);
-
- view.setFrameGraph(frameGraph);
-
view.setRootEntity(rootEntity);
view.show();
diff --git a/examples/qt3d/deferred-renderer-cpp/main.cpp b/examples/qt3d/deferred-renderer-cpp/main.cpp
index b910b4920..65100398a 100644
--- a/examples/qt3d/deferred-renderer-cpp/main.cpp
+++ b/examples/qt3d/deferred-renderer-cpp/main.cpp
@@ -112,7 +112,6 @@ int main(int ac, char **av)
camController->setCamera(camera);
// FrameGraph
- Qt3DRender::QFrameGraph *frameGraph = new Qt3DRender::QFrameGraph();
DeferredRenderer *deferredRenderer = new DeferredRenderer();
deferredRenderer->setClearColor(Qt::black);
deferredRenderer->setRect(QRectF(0.0f, 0.0f, 1.0f, 1.0f));
@@ -122,9 +121,7 @@ int main(int ac, char **av)
deferredRenderer->setSceneCamera(camera);
deferredRenderer->setGBufferLayers(sceneLayer->names());
deferredRenderer->setScreenQuadLayers(quadLayer->names());
-
- frameGraph->setActiveFrameGraph(deferredRenderer);
- view.setFrameGraph(frameGraph);
+ view.setActiveFrameGraph(deferredRenderer);
// Scene Content
Qt3DCore::QEntity *sphereOne = new Qt3DCore::QEntity(rootEntity);
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)));
diff --git a/examples/qt3d/examples-common/qt3dwindow.h b/examples/qt3d/examples-common/qt3dwindow.h
index 8b2d79a18..1f3f78b7d 100644
--- a/examples/qt3d/examples-common/qt3dwindow.h
+++ b/examples/qt3d/examples-common/qt3dwindow.h
@@ -50,6 +50,8 @@ class QEntity;
namespace Qt3DRender {
class QCamera;
class QFrameGraph;
+class QFrameGraphNode;
+class QForwardRenderer;
class QRenderAspect;
}
@@ -74,8 +76,9 @@ public:
void setRootEntity(Qt3DCore::QEntity *root);
- void setFrameGraph(Qt3DRender::QFrameGraph *frameGraph);
- Qt3DRender::QFrameGraph *frameGraph() const;
+ void setActiveFrameGraph(Qt3DRender::QFrameGraphNode *activeFrameGraph);
+ Qt3DRender::QFrameGraphNode *activeFrameGraph() const;
+ Qt3DRender::QForwardRenderer *defaultFramegraph() const;
Qt3DRender::QCamera *camera() const;
@@ -97,6 +100,7 @@ private:
// Renderer configuration
Qt3DRender::QFrameGraph *m_frameGraph;
+ Qt3DRender::QForwardRenderer *m_forwardRenderer;
Qt3DRender::QCamera *m_defaultCamera;
// Input configuration