Qt 5.9 | Qt 3D | C++ Classes | QBuffer

Qt 5.9.3 Reference Documentation

# QBuffer Class

(Qt3DRender::QBuffer)

Provides a data store for raw data to later be used as vertices or uniforms. More...

Header: | #include <Qt3DRender/QBuffer>
qmake: | QT += 3drender
Instantiated By: | Buffer
Inherits: | Qt3DCore::QNode

- List of all members, including inherited members

## Public Types

enum | AccessType { Write, Read, ReadWrite }
enum | BufferType { VertexBuffer, IndexBuffer, PixelPackBuffer, PixelUnpackBuffer, ..., DrawIndirectBuffer }
enum | UsageType { StreamDraw, StreamRead, StreamCopy, StaticDraw, ..., DynamicCopy }

## Properties

- accessType : AccessType
- syncData : bool
- type : BufferType
- usage : UsageType

- 3 properties inherited from Qt3DCore::QNode

## Public Functions

| QBuffer(BufferType ty = QBuffer::VertexBuffer, Qt3DCore::QNode *parent = nullptr)
AccessType | accessType() const
QByteArray | data() const
QBufferDataGeneratorPtr | dataGenerator() const
bool | isSyncData() const
void | setData(const QByteArray &bytes)
void | setDataGenerator(const QBufferDataGeneratorPtr &functor)
BufferType | type() const
void | updateData(int offset, const QByteArray &bytes)
UsageType | usage() const

- 11 public functions inherited from Qt3DCore::QNode

## Public Slots

void | setAccessType(AccessType access)
void | setSyncData(bool syncData)
void | setType(BufferType type)
void | setUsage(UsageType usage)

- 3 public slots inherited from Qt3DCore::QNode

## Signals

void | accessTypeChanged(AccessType access)
void | dataAvailable()
void | dataChanged(const QByteArray &bytes)
void | syncDataChanged(bool syncData)
void | typeChanged(BufferType type)
void | usageChanged(UsageType usage)

- 4 signals inherited from Qt3DCore::QNode

## Related Non-Members

typedef | QBufferDataGeneratorPtr

### Additional Inherited Members

- 2 protected functions inherited from Qt3DCore::QNode

## Detailed Description

Provides a data store for raw data to later be used as vertices or uniforms.

Data can either be provided directly using QBuffer::setData() or by specifying a generator with QBuffer::setDataGenerator() and providing a Qt3DRender::QBufferDataGeneratorPtr.

When using a generator the data will be loaded asynchronously in a job. The loaded data can be read back if the QBuffer::syncData flag is set to true.

## Member Type Documentation

### enum QBuffer::AccessType

### enum QBuffer::BufferType

The type of the buffer.

Constant | Value | Description
--- | --- | ---
`Qt3DRender::QBuffer::VertexBuffer` | `0x8892` | GL_ARRAY_BUFFER
`Qt3DRender::QBuffer::IndexBuffer` | `0x8893` | GL_ELEMENT_ARRAY_BUFFER
`Qt3DRender::QBuffer::PixelPackBuffer` | `0x88EB` | GL_PIXEL_PACK_BUFFER
`Qt3DRender::QBuffer::PixelUnpackBuffer` | `0x88EC` | GL_PIXEL_UNPACK_BUFFER
`Qt3DRender::QBuffer::UniformBuffer` | `0x8A11` | GL_UNIFORM_BUFFER
`Qt3DRender::QBuffer::ShaderStorageBuffer` | `0x90D2` | GL_SHADER_STORAGE_BUFFER
`Qt3DRender::QBuffer::DrawIndirectBuffer` | `0x8F3F` | GL_DRAW_INDIRECT_BUFFER

### enum QBuffer::UsageType

The type of the usage.

Constant | Value | Description
--- | --- | ---
`Qt3DRender::QBuffer::StreamDraw` | `0x88E0` | GL_STREAM_DRAW
`Qt3DRender::QBuffer::StreamRead` | `0x88E1` | GL_STREAM_READ
`Qt3DRender::QBuffer::StreamCopy` | `0x88E2` | GL_STREAM_COPY
`Qt3DRender::QBuffer::StaticDraw` | `0x88E4` | GL_STATIC_DRAW
`Qt3DRender::QBuffer::StaticRead` | `0x88E5` | GL_STATIC_READ
`Qt3DRender::QBuffer::StaticCopy` | `0x88E6` | GL_STATIC_COPY
`Qt3DRender::QBuffer::DynamicDraw` | `0x88E8` | GL_DYNAMIC_DRAW
`Qt3DRender::QBuffer::DynamicRead` | `0x88E9` | GL_DYNAMIC_READ
`Qt3DRender::QBuffer::DynamicCopy` | `0x88EA` | GL_DYNAMIC_COPY

## Property Documentation

### accessType : AccessType

Access functions:

AccessType | accessType() const
void | setAccessType(AccessType access)

Notifier signal:

void | accessTypeChanged(AccessType access)

### syncData : bool

Holds the syncData flag. When syncData is true, this will force data created by a Qt3DRender::QBufferDataGenerator to also be updated on the frontend Qt3DRender::QBuffer node. By default syncData is false.

Note: : This has no effect if the buffer's data was set directly using the data property.

Access functions:

bool | isSyncData() const
void | setSyncData(bool syncData)

Notifier signal:

void | syncDataChanged(bool syncData)

### type : BufferType

Holds the buffer type.

Access functions:

BufferType | type() const
void | setType(BufferType type)

Notifier signal:

void | typeChanged(BufferType type)

### usage : UsageType

Holds the buffer usage.

Access functions:

UsageType | usage() const
void | setUsage(UsageType usage)

Notifier signal:

void | usageChanged(UsageType usage)

## Member Function Documentation

### QBuffer::QBuffer(BufferType ty = QBuffer::VertexBuffer, Qt3DCore::QNode *parent = nullptr)

Default constructs an instance of QBuffer.

### QByteArray QBuffer::data() const

Returns the data.

See also setData().

### `[signal]` void QBuffer::dataAvailable()

### `[signal]` void QBuffer::dataChanged(const QByteArray &bytes)

This signal is emitted with bytes when data changes.

### QBufferDataGeneratorPtr QBuffer::dataGenerator() const

Returns the buffer functor.

See also setDataGenerator().

### void QBuffer::setData(const QByteArray &bytes)

Sets bytes as data.

See also data().

### void QBuffer::setDataGenerator(const QBufferDataGeneratorPtr &functor)

Sets the buffer functor.

See also dataGenerator().

### void QBuffer::updateData(int offset, const QByteArray &bytes)

Updates the data by replacing it with bytes at offset.

## Related Non-Members

### typedef Qt3DRender::QBufferDataGeneratorPtr