Spec-Zone.ru › Qt 5.13

Класс QOpenGLBuffer

Класс QOpenGLBuffer предоставляет функции для создания и управления объектами буферов OpenGL. Подробнее...

Заголовок: #include <QOpenGLBuffer>
qmake: QT += gui
С момента: Qt 5.0

Этот класс был представлен в Qt 5.0.

  • Список всех членов, включая унаследованные

Открытые типы

Перечисление Access { ReadOnly, WriteOnly, ReadWrite }
Перечисление RangeAccessFlag { RangeRead, RangeWrite, RangeInvalidate, RangeInvalidateBuffer, RangeFlushExplicit, RangeUnsynchronized }
Флаги RangeAccessFlags
Перечисление Type { VertexBuffer, IndexBuffer, PixelPackBuffer, PixelUnpackBuffer }
Перечисление UsagePattern { StreamDraw, StreamRead, StreamCopy, StaticDraw, ..., DynamicCopy }

Открытые функции

QOpenGLBuffer(const QOpenGLBuffer &other)
QOpenGLBuffer(QOpenGLBuffer::Type type)
QOpenGLBuffer()
QOpenGLBuffer & operator=(const QOpenGLBuffer &other)
~QOpenGLBuffer()
void allocate(const void *data, int count)
void allocate(int count)
bool bind()
GLuint bufferId() const
bool create()
void destroy()
bool isCreated() const
void * map(QOpenGLBuffer::Access access)
void * mapRange(int offset, int count, QOpenGLBuffer::RangeAccessFlags access)
bool read(int offset, void *data, int count)
void release()
void setUsagePattern(QOpenGLBuffer::UsagePattern value)
int size() const
QOpenGLBuffer::Type type() const
bool unmap()
QOpenGLBuffer::UsagePattern usagePattern() const
void write(int offset, const void *data, int count)

Статические открытые члены

void release(QOpenGLBuffer::Type type)

Подробное описание

Объекты буфера создаются на сервере OpenGL, чтобы приложение-клиент могло избегать загрузки вершин, индексов, данных изображения текстуры и т. д. каждый раз, когда они нужны.

Объекты QOpenGLBuffer могут копироваться как ссылка на базовый объект буфера OpenGL:

    QOpenGLBuffer buffer1(QOpenGLBuffer::IndexBuffer);
    buffer1.create();

    QOpenGLBuffer buffer2 = buffer1;

Класс QOpenGLBuffer выполняет поверхностную копию, когда объекты копируются таким образом, но не реализует семантику копирования при записи. Исходный объект будет затронут всякий раз, когда копия изменяется.

Документация по типам членов

Перечисление QOpenGLBuffer::Access

Это перечисление определяет режим доступа для QOpenGLBuffer::map().

Постоянная Значение Описание
QOpenGLBuffer::ReadOnly 0x88B8 Буфер будет отображен только для чтения.
QOpenGLBuffer::WriteOnly 0x88B9 Буфер будет отображен только для записи.
QOpenGLBuffer::ReadWrite 0x88BA Буфер будет отображен для чтения и записи.

Перечисление QOpenGLBuffer::RangeAccessFlagфлаги QOpenGLBuffer::RangeAccessFlags

Это перечисление определяет биты режима доступа для QOpenGLBuffer::mapRange().

Постоянная Значение Описание
QOpenGLBuffer::RangeRead 0x0001 Буфер будет отображен для чтения.
QOpenGLBuffer::RangeWrite 0x0002 Буфер будет отображен для записи.
QOpenGLBuffer::RangeInvalidate 0x0004 Отбросить предыдущее содержимое указанного диапазона.
QOpenGLBuffer::RangeInvalidateBuffer 0x0008 Отбросить предыдущее содержимое всего буфера.
QOpenGLBuffer::RangeFlushExplicit 0x0010 Указывает, что модификации должны быть явно сброшены с помощью glFlushMappedBufferRange.
QOpenGLBuffer::RangeUnsynchronized 0x0020 Указывает, что ожидаемые операции не должны синхронизироваться перед возвратом из mapRange().

Тип RangeAccessFlags является типом-синонимом для QFlags<RangeAccessFlag>. Он хранит комбинацию значений RangeAccessFlag с использованием оператора OR.

Перечисление QOpenGLBuffer::Type

Это перечисление определяет тип объекта буфера OpenGL для создания с помощью QOpenGLBuffer.

Постоянная Значение Описание
QOpenGLBuffer::VertexBuffer 0x8892 Объект буфера вершин для использования при указании массивов вершин.
QOpenGLBuffer::IndexBuffer 0x8893 Объект буфера индексов для использования с glDrawElements().
QOpenGLBuffer::PixelPackBuffer 0x88EB Объект буфера пакета пикселей для чтения данных пикселей с сервера OpenGL (например, с glReadPixels()). Не поддерживается в OpenGL/ES.
QOpenGLBuffer::PixelUnpackBuffer 0x88EC Объект буфера распаковки пикселей для записи данных пикселей на сервер OpenGL (например, с glTexImage2D()). Не поддерживается в OpenGL/ES.

Перечисление QOpenGLBuffer::UsagePattern

Это перечисление определяет шаблон использования объекта QOpenGLBuffer.

Константа Значение Описание
QOpenGLBuffer::StreamDraw 0x88E0 Данные будут установлены один раз и использованы несколько раз для операций отрисовки. В OpenGL/ES 1.1 это идентично StaticDraw.
QOpenGLBuffer::StreamRead 0x88E1 Данные будут установлены один раз и использованы несколько раз для чтения данных с сервера OpenGL. Не поддерживается в OpenGL/ES.
QOpenGLBuffer::StreamCopy 0x88E2 Данные будут установлены один раз и использованы несколько раз для чтения данных с сервера OpenGL для дальнейших операций отрисовки. Не поддерживается в OpenGL/ES.
QOpenGLBuffer::StaticDraw 0x88E4 Данные будут установлены один раз и использованы многократно для операций отрисовки.
QOpenGLBuffer::StaticRead 0x88E5 Данные будут установлены один раз и использованы многократно для чтения данных с сервера OpenGL. Не поддерживается в OpenGL/ES.
QOpenGLBuffer::StaticCopy 0x88E6 Данные будут установлены один раз и использованы многократно для чтения данных с сервера OpenGL для дальнейших операций отрисовки. Не поддерживается в OpenGL/ES.
QOpenGLBuffer::DynamicDraw 0x88E8 Данные будут изменены многократно и использованы многократно для операций отрисовки.
QOpenGLBuffer::DynamicRead 0x88E9 Данные будут изменены многократно и использованы многократно для чтения данных с сервера OpenGL. Не поддерживается в OpenGL/ES.
QOpenGLBuffer::DynamicCopy 0x88EA Данные будут изменены многократно и использованы многократно для чтения данных с сервера OpenGL для дальнейших операций отрисовки. Не поддерживается в OpenGL/ES.

Документация по функциям-членам

QOpenGLBuffer::QOpenGLBuffer(const QOpenGLBuffer &other)

Создаёт неглубокую копию other.

Примечание: QOpenGLBuffer не реализует семантику копирования с записью, поэтому other будет затронута всякий раз, когда копия изменяется.

QOpenGLBuffer::QOpenGLBuffer(QOpenGLBuffer::Type type)

Создаёт новый объект буфера типа type.

Примечание: этот конструктор только создаёт экземпляр QOpenGLBuffer. Фактический объект буфера на сервере OpenGL не создаётся до тех пор, пока не будет вызван create().

См. также create().

QOpenGLBuffer::QOpenGLBuffer()

Создаёт новый объект буфера типа QOpenGLBuffer::VertexBuffer.

Примечание: этот конструктор только создаёт экземпляр QOpenGLBuffer. Фактический объект буфера на сервере OpenGL не создаётся до тех пор, пока не будет вызван create().

См. также create().

QOpenGLBuffer &QOpenGLBuffer::operator=(const QOpenGLBuffer &other)

Присваивает неглубокую копию other этому объекту.

Примечание: QOpenGLBuffer не реализует семантику копирования с записью, поэтому other будет затронута всякий раз, когда копия изменяется.

QOpenGLBuffer::~QOpenGLBuffer()

Уничтожает этот объект буфера, включая хранилище, используемое на сервере OpenGL.

void QOpenGLBuffer::allocate(const void *data, int count)

Выделяет count байтов памяти в буфере, инициализированных содержимым data. Предыдущее содержимое будет удалено.

Предполагается, что для этого буфера был вызван create() и он был привязан к текущему контексту.

См. также create(), read() и write().

void QOpenGLBuffer::allocate(int count)

Это перегруженная функция.

Выделяет count байтов памяти в буфере. Предыдущее содержимое будет удалено.

Предполагается, что для этого буфера был вызван create() и он был привязан к текущему контексту.

См. также create() и write().

bool QOpenGLBuffer::bind()

Привязывает буфер, связанный с этим объектом, к текущему контексту OpenGL. Возвращает false если привязка невозможна, обычно потому, что type() не поддерживается в данной реализации OpenGL.

Буфер должен быть привязан к тому же QOpenGLContext, который был текущим при вызове create(), или к другому QOpenGLContext, который с ним совместно использует ресурсы. В противном случае эта функция вернёт false.

См. также release() и create().

GLuint QOpenGLBuffer::bufferId() const

Возвращает идентификатор OpenGL, связанный с этим буфером; ноль, если буфер не был создан.

См. также isCreated().

bool QOpenGLBuffer::create()

Создаёт объект буфера на сервере OpenGL. Возвращает true если объект был создан; в противном случае — false.

Эта функция должна быть вызвана с текущим QOpenGLContext. Буфер будет привязан к этому контексту и может использоваться только в нём (или в любом другом контексте, совместно использующем ресурсы с ним).

Эта функция вернёт false, если реализация OpenGL не поддерживает буферы или нет текущего QOpenGLContext.

См. также isCreated(), allocate(), write() и destroy().

void QOpenGLBuffer::destroy()

Уничтожает этот объект буфера, включая хранилище, используемое на сервере OpenGL. Все ссылки на буфер станут недействительными.

bool QOpenGLBuffer::isCreated() const

Возвращает true если этот буфер был создан; в противном случае — false.

См. также create() и destroy().

void *QOpenGLBuffer::map(QOpenGLBuffer::Access access)

Картирует содержимое этого буфера в адресное пространство приложения и возвращает указатель на него. Возвращает null, если отображение памяти невозможно. Параметр access указывает тип выполняемого доступа.

Предполагается, что для этого буфера был вызван create() и он был привязан к текущему контексту.

Примечание: Эта функция поддерживается только в OpenGL ES 2.0 или ранее, если присутствует расширение GL_OES_mapbuffer.

Примечание: В OpenGL ES 3.0 и новее или, в случае настольного OpenGL, если поддерживается GL_ARB_map_buffer_range, эта функция использует glMapBufferRange вместо glMapBuffer.

См. также unmap(), create(), bind() и mapRange().

void *QOpenGLBuffer::mapRange(int offset, int count, QOpenGLBuffer::RangeAccessFlags access)

Картирует указанный диапазон, заданный offset и count, содержимого этого буфера в адресное пространство приложения и возвращает указатель на него. Возвращает null, если отображение памяти невозможно. Параметр access указывает комбинацию флагов доступа.

Предполагается, что для этого буфера был вызван create() и он был привязан к текущему контексту.

Примечание: Эта функция недоступна в OpenGL ES 2.0 и ранее.

См. также unmap(), create() и bind().

bool QOpenGLBuffer::read(int offset, void *data, int count)

Читает count байтов из этого буфера, начиная с offset, в data. Возвращает true при успехе; false, если чтение из буфера не поддерживается. Чтение из буфера не поддерживается в OpenGL/ES.

Предполагается, что этот буфер привязан к текущему контексту.

См. также write() и bind().

void QOpenGLBuffer::release()

Освобождает буфер, связанный с этим объектом, из текущего контекста OpenGL.

Эта функция должна быть вызвана с тем же QOpenGLContext, что и при вызове bind() для буфера.

См. также bind().

END_OF_DOCUMENT_MARKER

[static] void QOpenGLBuffer::release(QOpenGLBuffer::Type type)

Освобождает буфер, связанный с type, в текущем QOpenGLContext.

Эта функция является прямым вызовом glBindBuffer(type, 0) для использования в тех случаях, когда вызывающий код не знает, какой QOpenGLBuffer был привязан к контексту, но хочет убедиться, что он освобожден.

    QOpenGLBuffer::release(QOpenGLBuffer::VertexBuffer);

void QOpenGLBuffer::setUsagePattern(QOpenGLBuffer::UsagePattern value)

Устанавливает режим использования для этого объекта буфера в value. Эта функция должна быть вызвана до allocate() или write().

См. также usagePattern(), allocate() и write().

int QOpenGLBuffer::size() const

Возвращает размер данных в этом буфере для операций чтения. Возвращает -1, если получение размера буфера не поддерживается или буфер не был создан.

Предполагается, что этот буфер привязан к текущему контексту.

См. также isCreated() и bind().

QOpenGLBuffer::Type QOpenGLBuffer::type() const

Возвращает тип буфера, представленного этим объектом.

bool QOpenGLBuffer::unmap()

Освобождает привязку буфера после его отображения в адресное пространство приложения с предыдущим вызовом map(). Возвращает true если развязка прошла успешно; иначе — false.

Предполагается, что этот буфер привязан к текущему контексту и ранее был отображён с помощью map().

Примечание: Эта функция поддерживается только в OpenGL ES 2.0 и более ранних версиях, если присутствует расширение GL_OES_mapbuffer.

См. также map().

QOpenGLBuffer::UsagePattern QOpenGLBuffer::usagePattern() const

Возвращает режим использования для этого объекта буфера. Значение по умолчанию — StaticDraw.

См. также setUsagePattern().

void QOpenGLBuffer::write(int offset, const void *data, int count)

Заменяет count байтов этого буфера, начиная с offset, содержимым data. Остальные байты буфера останутся неизменными.

Предполагается, что для этого буфера был вызван create() и он привязан к текущему контексту.

См. также create(), read() и allocate().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.13/qopenglbuffer.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API