Класс 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 — это псевдоним для QFlags<DirtyState>. Он хранит результат побитового ИЛИ из значений DirtyState.
Документация по функциям-членам
QMatrix4x4 RenderState::combinedMatrix() const
Возвращает матрицу, объединённую из матрицы вида и проекционной матрицы.
float RenderState::determinant() const
Возвращает определитель матрицы вида для использования при отрисовке.
float RenderState::devicePixelRatio() const
Возвращает отношение между физическими пикселями и независимыми от устройства пикселями для использования при отрисовке.
QRect RenderState::deviceRect() const
Возвращает прямоугольник устройства, на который выполняется отрисовка.
RenderState::DirtyStates RenderState::dirtyStates() const
Возвращает состояния отрисовки, которые изменились и требуют обновления геометрии, отрисованной с этим материалом, для соответствия текущему состоянию отрисовки.
bool RenderState::isMatrixDirty() const
Возвращает true если dirtyStates() содержит состояние грязной матрицы, в противном случае возвращает false.
bool RenderState::isOpacityDirty() const
Возвращает true если dirtyStates() содержит состояние грязной непрозрачности, в противном случае возвращает false.
QMatrix4x4 RenderState::modelViewMatrix() const
Возвращает матрицу вида.
Если у материала установлен флаг 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
Возвращает прямоугольник области просмотра поверхности, на которой выполняется отрисовка.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qsgmaterialshader-renderstate.html