Spec-Zone.ru › Qt 6.1

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

Spec-Zone.ru

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