diff options
author | Paul Lemire <paul.lemire@kdab.com> | 2014-09-04 11:06:08 +0200 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2014-09-15 12:37:21 +0200 |
commit | 51c6d169fc659e6bfd26573b71c6472719b26d00 (patch) | |
tree | f516e77bb94a4e052a81f896605acb3ece799113 /src/quick3d/quick3drenderer | |
parent | ff9d22b8b2b1109ebdd6ea56fbf388ad7b0c9e95 (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.pri | 4 | ||||
-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 |