From 3d8966f633b1419ad1696521b88822dec8999bf1 Mon Sep 17 00:00:00 2001 From: Sean Harmer Date: Fri, 15 Jan 2016 14:31:40 +0000 Subject: Add surface selector to forward renderer framegraph Change-Id: I9c436d3f5b9181075bfc0121174d530406f45c69 Reviewed-by: Paul Lemire --- src/render/defaults/qforwardrenderer.cpp | 18 +++++++++++++++++- src/render/defaults/qforwardrenderer.h | 6 ++++++ src/render/defaults/qforwardrenderer_p.h | 2 ++ 3 files changed, 25 insertions(+), 1 deletion(-) (limited to 'src/render/defaults') 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 #include #include +#include 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; -- cgit v1.2.3