diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2015-03-30 09:41:38 +0200 |
---|---|---|
committer | Paul Lemire <paul.lemire@kdab.com> | 2015-05-10 10:19:42 +0000 |
commit | 092f86e5bad3101b760cda33d499a3aa736fbb2e (patch) | |
tree | b2cc11287de8684bfca4c8def5b18611bb526b1c /src/render/frontend | |
parent | 260ac1d2fd155b6df6fbfdc7019a78882a9c0dce (diff) |
QRenderTargetSelector: takes list of active drawBuffers
Change-Id: I63ea3ddcd16034b4fb2d75cb8d5a90e7f557fd5e
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/frontend')
4 files changed, 44 insertions, 1 deletions
diff --git a/src/render/frontend/framegraph-components/qrendertargetselector.cpp b/src/render/frontend/framegraph-components/qrendertargetselector.cpp index 644dd4137..b357f713b 100644 --- a/src/render/frontend/framegraph-components/qrendertargetselector.cpp +++ b/src/render/frontend/framegraph-components/qrendertargetselector.cpp @@ -88,7 +88,41 @@ QRenderTarget *QRenderTargetSelector::target() const return d->m_target; } -/*! \internal */ +/*! + * \internal + * Sets the draw buffers \a buffers to be used. The draw buffers should be + * matching the Qt3D::QRenderAttachment::RenderAttachmentType + * defined in the attachments of the Qt3D::QRenderTarget associated to the + * Qt3D::QRenderTargetSelector instance. + * + * \note At render time, if no draw buffer has been specified, the renderer will + * default to using all the attachments' draw buffers. + * + */ +void QRenderTargetSelector::setDrawBuffers(const QList<QRenderAttachment::RenderAttachmentType> &buffers) +{ + Q_D(QRenderTargetSelector); + if (buffers != d->m_drawBuffers) { + d->m_drawBuffers = buffers; + + if (d->m_changeArbiter) { + QScenePropertyChangePtr change(new QScenePropertyChange(NodeUpdated, QSceneChange::Node, id())); + change->setPropertyName("drawBuffers"); + change->setValue(QVariant::fromValue(d->m_drawBuffers)); + d->notifyObservers(change); + } + } +} + +/*! + * Returns the list of draw buffers for the current Qt3D::QRenderTargetSelector instance. + */ +QList<QRenderAttachment::RenderAttachmentType> QRenderTargetSelector::drawBuffers() const +{ + Q_D(const QRenderTargetSelector); + return d->m_drawBuffers; +} + QRenderTargetSelector::QRenderTargetSelector(QRenderTargetSelectorPrivate &dd, QNode *parent) : QFrameGraphNode(dd, parent) { diff --git a/src/render/frontend/framegraph-components/qrendertargetselector.h b/src/render/frontend/framegraph-components/qrendertargetselector.h index b467673bc..f98f05f8f 100644 --- a/src/render/frontend/framegraph-components/qrendertargetselector.h +++ b/src/render/frontend/framegraph-components/qrendertargetselector.h @@ -40,6 +40,7 @@ #include <Qt3DRenderer/qt3drenderer_global.h> #include <Qt3DCore/qnode.h> #include <Qt3DRenderer/qframegraphnode.h> +#include <Qt3DRenderer/qrenderattachment.h> QT_BEGIN_NAMESPACE @@ -58,6 +59,9 @@ public: void setTarget(QRenderTarget *target); QRenderTarget *target() const; + void setDrawBuffers(const QList<QRenderAttachment::RenderAttachmentType> &buffers); + QList<QRenderAttachment::RenderAttachmentType> drawBuffers() const; + Q_SIGNALS: void targetChanged(); @@ -74,4 +78,6 @@ private: QT_END_NAMESPACE +Q_DECLARE_METATYPE(QList<Qt3D::QRenderAttachment::RenderAttachmentType>) + #endif // QT3D_QRENDERTARGETSELECTOR_H diff --git a/src/render/frontend/framegraph-components/qrendertargetselector_p.h b/src/render/frontend/framegraph-components/qrendertargetselector_p.h index 195dc6938..8c41de798 100644 --- a/src/render/frontend/framegraph-components/qrendertargetselector_p.h +++ b/src/render/frontend/framegraph-components/qrendertargetselector_p.h @@ -53,6 +53,7 @@ public: Q_DECLARE_PUBLIC(QRenderTargetSelector) QRenderTarget *m_target; + QList<QRenderAttachment::RenderAttachmentType> m_drawBuffers; }; } // Qt3D diff --git a/src/render/frontend/qrenderattachment.h b/src/render/frontend/qrenderattachment.h index e27813795..e0ba0ebcc 100644 --- a/src/render/frontend/qrenderattachment.h +++ b/src/render/frontend/qrenderattachment.h @@ -132,4 +132,6 @@ private: QT_END_NAMESPACE +Q_DECLARE_METATYPE(Qt3D::QRenderAttachment::RenderAttachmentType) + #endif // QT3D_QRENDERATTACHMENT_H |