summaryrefslogtreecommitdiffstats
path: root/src/render/frontend
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2015-03-30 09:41:38 +0200
committerPaul Lemire <paul.lemire@kdab.com>2015-05-10 10:19:42 +0000
commit092f86e5bad3101b760cda33d499a3aa736fbb2e (patch)
treeb2cc11287de8684bfca4c8def5b18611bb526b1c /src/render/frontend
parent260ac1d2fd155b6df6fbfdc7019a78882a9c0dce (diff)
QRenderTargetSelector: takes list of active drawBuffers
Change-Id: I63ea3ddcd16034b4fb2d75cb8d5a90e7f557fd5e Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/render/frontend')
-rw-r--r--src/render/frontend/framegraph-components/qrendertargetselector.cpp36
-rw-r--r--src/render/frontend/framegraph-components/qrendertargetselector.h6
-rw-r--r--src/render/frontend/framegraph-components/qrendertargetselector_p.h1
-rw-r--r--src/render/frontend/qrenderattachment.h2
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