Spec-Zone.ru › Qt

Класс RenderState

класс QSGMaterialShader::RenderState

Инкапсулирует текущее состояние отрисовки во время вызова QSGMaterialShader::updateUniformData() и других функций типа update. Подробнее...

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

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

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

перечисление DirtyState { DirtyMatrix, DirtyOpacity, DirtyCachedMaterialData, DirtyAll }
флаги DirtyStates

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

QMatrix4x4 combinedMatrix() const
float determinant() const
float devicePixelRatio() const
QRect deviceRect() const
RenderState::DirtyStates dirtyStates() const
bool isMatrixDirty() const
bool isOpacityDirty() const
QMatrix4x4 modelViewMatrix() const
float opacity() const
QMatrix4x4 projectionMatrix() const
QRhiResourceUpdateBatch * resourceUpdateBatch()
QRhi * rhi()
QByteArray * uniformData()
QRect viewportRect() const

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

Состояние отрисовки содержит ряд методов доступа, которые шейдер должен учитывать, чтобы соответствовать текущему состоянию дерева сцены.

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

перечисление RenderState::DirtyStateфлаги RenderState::DirtyStates

Константа Значение Описание
QSGMaterialShader::RenderState::DirtyMatrix 0x0001 Используется для указания того, что матрица изменилась и должна быть обновлена.
QSGMaterialShader::RenderState::DirtyOpacity 0x0002 Используется для указания того, что непрозрачность изменилась и должна быть обновлена.
QSGMaterialShader::RenderState::DirtyCachedMaterialData 0x0004 Используется для указания того, что кэшированное состояние материала изменилось и должно быть обновлено.
QSGMaterialShader::RenderState::DirtyAll 0xFFFF Используется для указания того, что все нужно обновить.

Тип DirtyStates — это typedef для QFlags<DirtyState>. Он хранит логическое ИЛИ сочетание значений DirtyState.

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

QMatrix4x4 RenderState::combinedMatrix() const

Возвращает матрицу, комбинированную из матриц modelview и project.

float RenderState::determinant() const

Возвращает определитель modelview, который должен использоваться для отрисовки.

float RenderState::devicePixelRatio() const

Возвращает отношение между физическими пикселями и пикселями независимыми от устройства, которое должно использоваться для отрисовки.

QRect RenderState::deviceRect() const

Возвращает прямоугольник device поверхности, на которую происходит отрисовка.

RenderState::DirtyStates RenderState::dirtyStates() const

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

bool RenderState::isMatrixDirty() const

Возвращает true, если dirtyStates() содержит состояние dirty матрицы, в противном случае возвращает false.

bool RenderState::isOpacityDirty() const

Возвращает true, если dirtyStates() содержит состояние dirty непрозрачности, в противном случае возвращает false.

QMatrix4x4 RenderState::modelViewMatrix() const

Возвращает матрицу model view.

Если у материала установлен флаг RequiresFullMatrix, это гарантирует, что это полная матрица преобразования, вычисленная из дерева сцены.

Однако, если этот флаг не установлен, рендерер может изменить эту матрицу. Например, он может предварительно преобразовать вершины на ЦПУ и установить эту матрицу в единичную.

В такой ситуации все же можно получить фактический определитель матрицы, установив флаг RequiresDeterminant в материале и вызвав метод determinant().

float RenderState::opacity() const

Возвращает накопленную непрозрачность, которая должна использоваться для отрисовки.

QMatrix4x4 RenderState::projectionMatrix() const

Возвращает матрицу проекции.

QRhiResourceUpdateBatch *RenderState::resourceUpdateBatch()

Возвращает пакет обновления ресурсов, в который можно добавить операции загрузки и копирования. Обычно используется методом QSGMaterialShader::updateSampledImage() для добавления в очередь обновлений содержимого текстур.

QRhi *RenderState::rhi()

Возвращает текущий QRhi.

QByteArray *RenderState::uniformData()

Возвращает указатель на данные для унифицированного (константного) буфера в шейдере. Данные униформи должны обновляться только из QSGMaterialShader::updateUniformData(). Возвращаемое значение равно null в других реализуемых функциях, таких как QSGMaterialShader::updateSampledImage().

Примечание: Сильно рекомендуется объявлять блок униформи с std140 в шейдере и тщательно изучить стандартную схему расположения блоков униформи, как описано в разделе 7.6.2.2 спецификации OpenGL. За реализацией QSGMaterialShader остаётся обеспечение того, что данные размещаются в нужном месте в QByteArray, учитывая требования к выравниванию. Предполагается, что код шейдера, переведённый на другие языки шейдеров, будет использовать те же смещения для элементов блока, даже когда целевой язык использует другие правила упаковки по умолчанию.

Примечание: Избегайте копирования из C++ POD типов, таких как структуры, для одновременного обновления нескольких членов, если не было проверено соответствие схем расположения C++ структуры и GLSL блока униформи.

QRect RenderState::viewportRect() const

Возвращает прямоугольник viewport поверхности, на которую происходит отрисовка.

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

Spec-Zone.ru

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