summaryrefslogtreecommitdiffstats
path: root/src/quick3d/quick3drenderer
diff options
context:
space:
mode:
authorPaul Lemire <paul.lemire@kdab.com>2014-09-04 11:06:08 +0200
committerSean Harmer <sean.harmer@kdab.com>2014-09-15 12:37:21 +0200
commit51c6d169fc659e6bfd26573b71c6472719b26d00 (patch)
treef516e77bb94a4e052a81f896605acb3ece799113 /src/quick3d/quick3drenderer
parentff9d22b8b2b1109ebdd6ea56fbf388ad7b0c9e95 (diff)
Quick3D components for RenderTargets
Change-Id: I5a62e337fcb0b1b5dd8185e15bfb637d6564ca1d Reviewed-by: Paul Lemire <paul.lemire@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/quick3d/quick3drenderer')
-rw-r--r--src/quick3d/quick3drenderer/items/items.pri4
-rw-r--r--src/quick3d/quick3drenderer/items/quick3drendertarget.cpp (renamed from src/quick3d/quick3drenderer/items/quick3drendertargetselector.cpp)45
-rw-r--r--src/quick3d/quick3drenderer/items/quick3drendertarget.h (renamed from src/quick3d/quick3drenderer/items/quick3drendertargetselector.h)23
3 files changed, 62 insertions, 10 deletions
diff --git a/src/quick3d/quick3drenderer/items/items.pri b/src/quick3d/quick3drenderer/items/items.pri
index 43553b81f..a1854559d 100644
--- a/src/quick3d/quick3drenderer/items/items.pri
+++ b/src/quick3d/quick3drenderer/items/items.pri
@@ -1,6 +1,6 @@
HEADERS += \
$$PWD/quick3drenderpassfilter.h \
- $$PWD/quick3drendertargetselector.h \
+ $$PWD/quick3drendertarget.h \
$$PWD/quick3dtechniquefilter.h \
$$PWD/quick3dviewport.h \
$$PWD/quick3dmaterial.h \
@@ -14,7 +14,7 @@ HEADERS += \
SOURCES += \
$$PWD/quick3drenderpassfilter.cpp \
- $$PWD/quick3drendertargetselector.cpp \
+ $$PWD/quick3drendertarget.cpp \
$$PWD/quick3dtechniquefilter.cpp \
$$PWD/quick3dviewport.cpp \
$$PWD/quick3dmaterial.cpp \
diff --git a/src/quick3d/quick3drenderer/items/quick3drendertargetselector.cpp b/src/quick3d/quick3drenderer/items/quick3drendertarget.cpp
index 98d290d0f..fd909f6d8 100644
--- a/src/quick3d/quick3drenderer/items/quick3drendertargetselector.cpp
+++ b/src/quick3d/quick3drenderer/items/quick3drendertarget.cpp
@@ -39,7 +39,7 @@
**
****************************************************************************/
-#include "quick3drendertargetselector.h"
+#include "quick3drendertarget.h"
QT_BEGIN_NAMESPACE
@@ -49,11 +49,52 @@ namespace Render {
namespace Quick {
-Quick3DRenderTargetSelector::Quick3DRenderTargetSelector(QObject * parent)
+Quick3DRenderTarget::Quick3DRenderTarget(QObject * parent)
: QObject(parent)
{
}
+QQmlListProperty<QRenderAttachment> Quick3DRenderTarget::qmlAttachments()
+{
+ return QQmlListProperty<QRenderAttachment>(this, 0,
+ &Quick3DRenderTarget::appendRenderAttachment,
+ &Quick3DRenderTarget::renderAttachmentCount,
+ &Quick3DRenderTarget::renderAttachmentAt,
+ &Quick3DRenderTarget::clearRenderAttachments);
+}
+
+void Quick3DRenderTarget::appendRenderAttachment(QQmlListProperty<QRenderAttachment> *list, QRenderAttachment *attachment)
+{
+ Quick3DRenderTarget *rT = qobject_cast<Quick3DRenderTarget *>(list->object);
+ if (rT)
+ rT->parentRenderTarget()->addAttachment(attachment);
+}
+
+QRenderAttachment *Quick3DRenderTarget::renderAttachmentAt(QQmlListProperty<QRenderAttachment> *list, int index)
+{
+ Quick3DRenderTarget *rT = qobject_cast<Quick3DRenderTarget *>(list->object);
+ if (rT)
+ return rT->parentRenderTarget()->attachments().at(index);
+ return Q_NULLPTR;
+}
+
+int Quick3DRenderTarget::renderAttachmentCount(QQmlListProperty<QRenderAttachment> *list)
+{
+ Quick3DRenderTarget *rT = qobject_cast<Quick3DRenderTarget *>(list->object);
+ if (rT)
+ return rT->parentRenderTarget()->attachments().count();
+ return -1;
+}
+
+void Quick3DRenderTarget::clearRenderAttachments(QQmlListProperty<QRenderAttachment> *list)
+{
+ Quick3DRenderTarget *rT = qobject_cast<Quick3DRenderTarget *>(list->object);
+ if (rT) {
+ Q_FOREACH (QRenderAttachment *att, rT->parentRenderTarget()->attachments())
+ rT->parentRenderTarget()->removeAttachment(att);
+ }
+}
+
} // Quick
} // Render
diff --git a/src/quick3d/quick3drenderer/items/quick3drendertargetselector.h b/src/quick3d/quick3drenderer/items/quick3drendertarget.h
index 60651b91c..93783f30b 100644
--- a/src/quick3d/quick3drenderer/items/quick3drendertargetselector.h
+++ b/src/quick3d/quick3drenderer/items/quick3drendertarget.h
@@ -39,11 +39,13 @@
**
****************************************************************************/
-#ifndef QT3D_RENDER_QUICK_QUICK3DRENDERTARGETSELECTOR_H
-#define QT3D_RENDER_QUICK_QUICK3DRENDERTARGETSELECTOR_H
+#ifndef QT3D_RENDER_QUICK_QUICK3DRENDERTARGET_H
+#define QT3D_RENDER_QUICK_QUICK3DRENDERTARGET_H
#include <Qt3DQuickRenderer/qt3dquickrenderer_global.h>
-#include <Qt3DRenderer/qrendertargetselector.h>
+#include <Qt3DRenderer/qrendertarget.h>
+#include <Qt3DRenderer/qrenderattachment.h>
+#include <QQmlListProperty>
QT_BEGIN_NAMESPACE
@@ -53,12 +55,21 @@ namespace Render {
namespace Quick {
-class QT3DQUICKRENDERERSHARED_EXPORT Quick3DRenderTargetSelector : public QObject
+class QT3DQUICKRENDERERSHARED_EXPORT Quick3DRenderTarget : public QObject
{
Q_OBJECT
+ Q_PROPERTY(QQmlListProperty<Qt3D::QRenderAttachment> attachments READ qmlAttachments)
public:
- explicit Quick3DRenderTargetSelector(QObject *parent = 0);
+ explicit Quick3DRenderTarget(QObject *parent = 0);
+ inline QRenderTarget *parentRenderTarget() const { return qobject_cast<QRenderTarget *>(parent()); }
+ QQmlListProperty<QRenderAttachment> qmlAttachments();
+
+private:
+ static void appendRenderAttachment(QQmlListProperty<QRenderAttachment> *list, QRenderAttachment *attachment);
+ static QRenderAttachment *renderAttachmentAt(QQmlListProperty<QRenderAttachment> *list, int index);
+ static int renderAttachmentCount(QQmlListProperty<QRenderAttachment> *list);
+ static void clearRenderAttachments(QQmlListProperty<QRenderAttachment> *list);
};
} // Quick
@@ -69,4 +80,4 @@ public:
QT_END_NAMESPACE
-#endif // QT3D_RENDER_QUICK_QUICK3DRENDERTARGETSELECTOR_H
+#endif // QT3D_RENDER_QUICK_QUICK3DRENDERTARGET_H