123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- #ifndef QT3DRENDER_QBUFFER_H
- #define QT3DRENDER_QBUFFER_H
- #include <Qt3DCore/qnode.h>
- #include <Qt3DRender/qt3drender_global.h>
- #include <QSharedPointer>
- QT_BEGIN_NAMESPACE
- namespace Qt3DRender {
- class QBufferPrivate;
- class QBufferDataGenerator;
- typedef QSharedPointer<QBufferDataGenerator> QBufferDataGeneratorPtr;
- class QT3DRENDERSHARED_EXPORT QBuffer : public Qt3DCore::QNode
- {
- Q_OBJECT
- Q_PROPERTY(BufferType type READ type WRITE setType NOTIFY typeChanged)
- Q_PROPERTY(UsageType usage READ usage WRITE setUsage NOTIFY usageChanged)
- Q_PROPERTY(bool syncData READ isSyncData WRITE setSyncData NOTIFY syncDataChanged)
- public:
- enum BufferType
- {
- VertexBuffer = 0x8892,
- IndexBuffer = 0x8893,
- PixelPackBuffer = 0x88EB,
- PixelUnpackBuffer = 0x88EC,
- UniformBuffer = 0x8A11,
- ShaderStorageBuffer = 0x90D2
- };
- Q_ENUM(BufferType)
- enum UsageType
- {
- StreamDraw = 0x88E0,
- StreamRead = 0x88E1,
- StreamCopy = 0x88E2,
- StaticDraw = 0x88E4,
- StaticRead = 0x88E5,
- StaticCopy = 0x88E6,
- DynamicDraw = 0x88E8,
- DynamicRead = 0x88E9,
- DynamicCopy = 0x88EA
- };
- Q_ENUM(UsageType)
- explicit QBuffer(BufferType ty = QBuffer::VertexBuffer, Qt3DCore::QNode *parent = nullptr);
- ~QBuffer();
- UsageType usage() const;
- BufferType type() const;
- bool isSyncData() const;
- void setData(const QByteArray &bytes);
- QByteArray data() const;
- void setDataGenerator(const QBufferDataGeneratorPtr &functor);
- QBufferDataGeneratorPtr dataGenerator() const;
- public Q_SLOTS:
- void setType(BufferType type);
- void setUsage(UsageType usage);
- void setSyncData(bool syncData);
- protected:
- void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &change) Q_DECL_OVERRIDE;
- Q_SIGNALS:
- void dataChanged(const QByteArray &bytes);
- void typeChanged(BufferType type);
- void usageChanged(UsageType usage);
- void syncDataChanged(bool syncData);
- private:
- Q_DECLARE_PRIVATE(QBuffer)
- Qt3DCore::QNodeCreatedChangeBasePtr createNodeCreationChange() const Q_DECL_OVERRIDE;
- };
- }
- QT_END_NAMESPACE
- #endif
|