QSGMaterialShader::RenderState Class
class QSGMaterialShader::RenderStateEncapsula el estado de renderizado actual durante una llamada a QSGMaterialShader::updateUniformData() y las demás funciones del tipo update. Más...
Tipos públicos
| enum | DirtyState { DirtyMatrix, DirtyOpacity, DirtyCachedMaterialData, DirtyAll } |
| flags | DirtyStates |
Funciones públicas
| QMatrix4x4 | combinedMatrix() const |
| float | determinant() const |
| float | devicePixelRatio() const |
| QRect | deviceRect() const |
| QSGMaterialShader::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 |
Descripción detallada
El estado de renderizado contiene un número de accessors que el shader necesita respetar para ajustarse al estado actual del gráfico de la escena.
Documentación de tipos de miembros
enum RenderState::DirtyState
flags RenderState::DirtyStates
| Constante | Valor | Descripción |
|---|---|---|
QSGMaterialShader::RenderState::DirtyMatrix | 0x0001 | Se utiliza para indicar que la matriz ha cambiado y debe ser actualizada. |
QSGMaterialShader::RenderState::DirtyOpacity | 0x0002 | Se utiliza para indicar que la opacidad ha cambiado y debe ser actualizada. |
QSGMaterialShader::RenderState::DirtyCachedMaterialData | 0x0004 | Se utiliza para indicar que el estado del material en caché ha cambiado y debe actualizarse. |
QSGMaterialShader::RenderState::DirtyAll | 0xFFFF | Se utiliza para indicar que todo debe actualizarse. |
El tipo DirtyStates es un typedef para QFlags<DirtyState>. Almacena una combinación OR de valores DirtyState.
Documentación de las funciones miembro
QMatrix4x4 RenderState::combinedMatrix() const
Devuelve la matriz combinada de la matriz de la vista modelo y la matriz del proyecto.
float RenderState::determinant() const
Devuelve el determinante de la vista del modelo que se utilizará para el renderizado.
float RenderState::devicePixelRatio() const
Devuelve la proporción entre píxeles físicos y píxeles independientes del dispositivo que se utilizará para el renderizado.
QRect RenderState::deviceRect() const
Devuelve el rectángulo de dispositivo de la superficie que se está renderizando en
QSGMaterialShader::RenderState::DirtyStates RenderState::dirtyStates() const
Devuelve qué estados de renderizado han cambiado y deben actualizarse para que la geometría renderizada con este material se ajuste al estado de renderizado actual.
bool RenderState::isMatrixDirty() const
Devuelve true si el dirtyStates() contiene el estado de matriz sucia, en caso contrario devuelve false.
bool RenderState::isOpacityDirty() const
Devuelve true si el dirtyStates() contiene el estado de opacidad sucio, en caso contrario devuelve false.
QMatrix4x4 RenderState::modelViewMatrix() const
Devuelve la matriz de vista del modelo.
Si el material tiene activada la opción RequiresFullMatrix, se garantiza que se trata de la matriz de transformación completa calculada a partir de la escena gráfica.
Sin embargo, si esta opción no está activada, el renderizador puede alterar esta matriz. Por ejemplo, puede pre-transformar los vértices en la CPU y establecer esta matriz a identidad.
En una situación como la anterior, todavía es posible recuperar el determinante real de la matriz estableciendo la bandera RequiresDeterminant en el material y llamando al accesorio determinant().
float RenderState::opacity() const
Devuelve la opacidad acumulada que se utilizará para el renderizado.
QMatrix4x4 RenderState::projectionMatrix() const
Devuelve la matriz de proyección.
QRhiResourceUpdateBatch *RenderState::resourceUpdateBatch()
Devuelve un lote de actualización de recursos en el que se pueden poner en cola operaciones de carga y copia. Normalmente se utiliza en QSGMaterialShader::updateSampledImage() para poner en cola actualizaciones de contenido de imágenes de textura.
QRhi *RenderState::rhi()
Devuelve la dirección actual QRhi.
QByteArray *RenderState::uniformData()
Devuelve un puntero a los datos para el buffer uniforme (constante) en el shader. Los datos uniformes sólo deben actualizarse desde QSGMaterialShader::updateUniformData(). El valor de retorno es nulo en las otras funciones reimplementables, como, QSGMaterialShader::updateSampledImage().
Nota: Se recomienda encarecidamente declarar el bloque uniforme con std140 en el shader, y estudiar detenidamente la disposición estándar del bloque uniforme tal y como se describe en la sección 7.6.2.2 de la especificación OpenGL. Depende de la implementación de QSGMaterialShader asegurarse de que los datos se colocan en la ubicación correcta en este QByteArray, teniendo en cuenta los requisitos de alineación. Se espera que el código de sombreado traducido a otros lenguajes de sombreado utilice los mismos desplazamientos para los miembros del bloque, incluso cuando el lenguaje de destino utilice diferentes reglas de empaquetado por defecto.
Nota: Evite copiar desde tipos POD de C++, como structs, para actualizar varios miembros a la vez, a menos que se haya verificado que los layouts del struct de C++ y del bloque uniforme de GLSL coinciden.
QRect RenderState::viewportRect() const
Devuelve el rectángulo de la ventana gráfica de la superficie que se está renderizando.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.