Spec-Zone.ru › Qt 6.0

Класс 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

Возвращает матрицу, объединенную из матрицы вида и проекционной матрицы.

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.0/qsgmaterialshader-renderstate.html

Spec-Zone.ru

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