QOpenGLBuffer Class
The QOpenGLBuffer class provides functions for creating and managing OpenGL buffer objects. More...
| Header: | #include <QOpenGLBuffer> |
| qmake: | QT += gui |
| Since: | Qt 5.0 |
This class was introduced in Qt 5.0.
Public Types
| enum | Access { ReadOnly, WriteOnly, ReadWrite } |
| enum | RangeAccessFlag { RangeRead, RangeWrite, RangeInvalidate, RangeInvalidateBuffer, RangeFlushExplicit, RangeUnsynchronized } |
| enum | Type { VertexBuffer, IndexBuffer, PixelPackBuffer, PixelUnpackBuffer } |
| enum | UsagePattern { StreamDraw, StreamRead, StreamCopy, StaticDraw, StaticRead, …, DynamicCopy } |
Detailed Description
Buffer objects are created in the OpenGL server so that the client application can avoid uploading vertices, indices, texture image data, etc every time they are needed.
QOpenGLBuffer objects can be copied around as a reference to the underlying OpenGL buffer object:
QOpenGLBuffer buffer1(QOpenGLBuffer::IndexBuffer);
buffer1.create();
QOpenGLBuffer buffer2 = buffer1;
QOpenGLBuffer performs a shallow copy when objects are copied in this manner, but does not implement copy-on-write semantics. The original object will be affected whenever the copy is modified.
Member Type Documentation
enum QOpenGLBuffer::Access
This enum defines the access mode for QOpenGLBuffer::map().
| Constant | Value | Description |
|---|---|---|
QOpenGLBuffer::ReadOnly | 0x88B8 | The buffer will be mapped for reading only. |
QOpenGLBuffer::WriteOnly | 0x88B9 | The buffer will be mapped for writing only. |
QOpenGLBuffer::ReadWrite | 0x88BA | The buffer will be mapped for reading and writing. |
enum QOpenGLBuffer::RangeAccessFlag
This enum defines the access mode bits for QOpenGLBuffer::mapRange().
| Constant | Value | Description |
|---|---|---|
QOpenGLBuffer::RangeRead | 0x0001 | The buffer will be mapped for reading. |
QOpenGLBuffer::RangeWrite | 0x0002 | The buffer will be mapped for writing. |
QOpenGLBuffer::RangeInvalidate | 0x0004 | Discard the previous contents of the specified range. |
QOpenGLBuffer::RangeInvalidateBuffer | 0x0008 | Discard the previous contents of the entire buffer. |
QOpenGLBuffer::RangeFlushExplicit | 0x0010 | Indicates that modifications are to be flushed explicitly via glFlushMappedBufferRange. |
QOpenGLBuffer::RangeUnsynchronized | 0x0020 | Indicates that pending operations should not be synchronized before returning from mapRange(). |
enum QOpenGLBuffer::Type
This enum defines the type of OpenGL buffer object to create with QOpenGLBuffer.
| Constant | Value | Description |
|---|---|---|
QOpenGLBuffer::VertexBuffer | 0x8892 | Vertex buffer object for use when specifying vertex arrays. |
QOpenGLBuffer::IndexBuffer | 0x8893 | Index buffer object for use with glDrawElements(). |
QOpenGLBuffer::PixelPackBuffer | 0x88EB | Pixel pack buffer object for reading pixel data from the OpenGL server (for example, with glReadPixels()). Not supported under OpenGL/ES. |
QOpenGLBuffer::PixelUnpackBuffer | 0x88EC | Pixel unpack buffer object for writing pixel data to the OpenGL server (for example, with glTexImage2D()). Not supported under OpenGL/ES. |
enum QOpenGLBuffer::UsagePattern
This enum defines the usage pattern of a QOpenGLBuffer object.
| Constant | Value | Description |
|---|---|---|
QOpenGLBuffer::StreamDraw | 0x88E0 | The data will be set once and used a few times for drawing operations. Under OpenGL/ES 1.1 this is identical to StaticDraw. |
QOpenGLBuffer::StreamRead | 0x88E1 | The data will be set once and used a few times for reading data back from the OpenGL server. Not supported under OpenGL/ES. |
QOpenGLBuffer::StreamCopy | 0x88E2 | The data will be set once and used a few times for reading data back from the OpenGL server for use in further drawing operations. Not supported under OpenGL/ES. |
QOpenGLBuffer::StaticDraw | 0x88E4 | The data will be set once and used many times for drawing operations. |
QOpenGLBuffer::StaticRead | 0x88E5 | The data will be set once and used many times for reading data back from the OpenGL server. Not supported under OpenGL/ES. |
QOpenGLBuffer::StaticCopy | 0x88E6 | The data will be set once and used many times for reading data back from the OpenGL server for use in further drawing operations. Not supported under OpenGL/ES. |
QOpenGLBuffer::DynamicDraw | 0x88E8 | The data will be modified repeatedly and used many times for drawing operations. |
QOpenGLBuffer::DynamicRead | 0x88E9 | The data will be modified repeatedly and used many times for reading data back from the OpenGL server. Not supported under OpenGL/ES. |
QOpenGLBuffer::DynamicCopy | 0x88EA | The data will be modified repeatedly and used many times for reading data back from the OpenGL server for use in further drawing operations. Not supported under OpenGL/ES. |