summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-01-15 14:31:40 +0000
committerSean Harmer <sean.harmer@kdab.com>2016-01-17 17:20:53 +0000
commit3d8966f633b1419ad1696521b88822dec8999bf1 (patch)
treeaeabb450312a482cf3bc7c747a098cb294bba85a /src
parentd5e7727c58a35a5f68260f4a1d4ce3a61d652765 (diff)
Add surface selector to forward renderer framegraph
Change-Id: I9c436d3f5b9181075bfc0121174d530406f45c69 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/render/defaults/qforwardrenderer.cpp18
-rw-r--r--src/render/defaults/qforwardrenderer.h6
-rw-r--r--src/render/defaults/qforwardrenderer_p.h2
3 files changed, 25 insertions, 1 deletions
diff --git a/src/render/defaults/qforwardrenderer.cpp b/src/render/defaults/qforwardrenderer.cpp
index 0a44381ae..aa26a2295 100644
--- a/src/render/defaults/qforwardrenderer.cpp
+++ b/src/render/defaults/qforwardrenderer.cpp
@@ -42,6 +42,7 @@
#include <Qt3DRender/qclearbuffer.h>
#include <Qt3DRender/qannotation.h>
#include <Qt3DRender/qfrustumculling.h>
+#include <Qt3DRender/qrendersurfaceselector.h>
QT_BEGIN_NAMESPACE
@@ -53,6 +54,7 @@ namespace Qt3DRender {
*/
QForwardRendererPrivate::QForwardRendererPrivate()
: QTechniqueFilterPrivate()
+ , m_surfaceSelector(new QRenderSurfaceSelector)
, m_viewport(new QViewport())
, m_cameraSelector(new QCameraSelector())
, m_clearBuffer(new QClearBuffer())
@@ -67,7 +69,8 @@ void QForwardRendererPrivate::init()
m_frustumCulling->setParent(m_clearBuffer);
m_clearBuffer->setParent(m_cameraSelector);
m_cameraSelector->setParent(m_viewport);
- m_viewport->setParent(q);
+ m_viewport->setParent(m_surfaceSelector);
+ m_surfaceSelector->setParent(q);
m_viewport->setRect(QRectF(0.0f, 0.0f, 1.0f, 1.0f));
m_viewport->setClearColor(Qt::white);
@@ -107,6 +110,7 @@ QForwardRenderer::QForwardRenderer(QNode *parent)
QObject::connect(d->m_viewport, SIGNAL(clearColorChanged(const QColor &)), this, SIGNAL(clearColorChanged(const QColor &)));
QObject::connect(d->m_viewport, SIGNAL(rectChanged(const QRectF &)), this, SIGNAL(viewportRectChanged(const QRectF &)));
QObject::connect(d->m_cameraSelector, SIGNAL(cameraChanged(Qt3DCore::QEntity *)), this, SIGNAL(cameraChanged(Qt3DCore::QEntity *)));
+ QObject::connect(d->m_surfaceSelector, SIGNAL(surfaceChanged(QSurface *)), this, SIGNAL(surfaceChanged(QSurface *)));
d->init();
}
@@ -140,6 +144,12 @@ void QForwardRenderer::setCamera(Qt3DCore::QEntity *camera)
d->m_cameraSelector->setCamera(camera);
}
+void QForwardRenderer::setSurface(QSurface *surface)
+{
+ Q_D(QForwardRenderer);
+ d->m_surfaceSelector->setSurface(surface);
+}
+
/*!
\property Qt3DRender::QForwardRenderer::viewportRect
@@ -175,6 +185,12 @@ Qt3DCore::QEntity *QForwardRenderer::camera() const
return d->m_cameraSelector->camera();
}
+QSurface *QForwardRenderer::surface() const
+{
+ Q_D(const QForwardRenderer);
+ return d->m_surfaceSelector->surface();
+}
+
} // namespace Qt3DRender
QT_END_NAMESPACE
diff --git a/src/render/defaults/qforwardrenderer.h b/src/render/defaults/qforwardrenderer.h
index 44f74983c..454235d37 100644
--- a/src/render/defaults/qforwardrenderer.h
+++ b/src/render/defaults/qforwardrenderer.h
@@ -43,6 +43,8 @@
QT_BEGIN_NAMESPACE
+class QSurface;
+
namespace Qt3DRender {
class QForwardRendererPrivate;
@@ -50,6 +52,7 @@ class QForwardRendererPrivate;
class QT3DRENDERSHARED_EXPORT QForwardRenderer : public QTechniqueFilter
{
Q_OBJECT
+ Q_PROPERTY(QSurface *surface READ surface WRITE setSurface NOTIFY surfaceChanged)
Q_PROPERTY(QRectF viewportRect READ viewportRect WRITE setViewportRect NOTIFY viewportRectChanged)
Q_PROPERTY(QColor clearColor READ clearColor WRITE setClearColor NOTIFY clearColorChanged)
Q_PROPERTY(Qt3DCore::QEntity *camera READ camera WRITE setCamera NOTIFY cameraChanged)
@@ -60,16 +63,19 @@ public:
QRectF viewportRect() const;
QColor clearColor() const;
Qt3DCore::QEntity *camera() const;
+ QSurface *surface() const;
public Q_SLOTS:
void setViewportRect(const QRectF &viewportRect);
void setClearColor(const QColor &clearColor);
void setCamera(Qt3DCore::QEntity *camera);
+ void setSurface(QSurface * surface);
Q_SIGNALS:
void viewportRectChanged(const QRectF &viewportRect);
void clearColorChanged(const QColor &clearColor);
void cameraChanged(Qt3DCore::QEntity *camera);
+ void surfaceChanged(QSurface *surface);
private:
Q_DECLARE_PRIVATE(QForwardRenderer)
diff --git a/src/render/defaults/qforwardrenderer_p.h b/src/render/defaults/qforwardrenderer_p.h
index cf352de09..e288331a4 100644
--- a/src/render/defaults/qforwardrenderer_p.h
+++ b/src/render/defaults/qforwardrenderer_p.h
@@ -59,12 +59,14 @@ class QViewport;
class QClearBuffer;
class QCameraSelector;
class QFrustumCulling;
+class QRenderSurfaceSelector;
class QForwardRendererPrivate: public QTechniqueFilterPrivate
{
public:
QForwardRendererPrivate();
+ QRenderSurfaceSelector *m_surfaceSelector;
QViewport *m_viewport;
QCameraSelector *m_cameraSelector;
QClearBuffer *m_clearBuffer;