Sur cette page

QSGMaterialShader::RenderState Class

class QSGMaterialShader::RenderState

Encapsule l'état actuel du rendu lors d'un appel à QSGMaterialShader::updateUniformData() et aux autres fonctions de type update. Plus d'informations...

Types publics

enum DirtyState { DirtyMatrix, DirtyOpacity, DirtyCachedMaterialData, DirtyAll }
flags DirtyStates

Fonctions publiques

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

Description détaillée

L'état de rendu contient un certain nombre d'accesseurs que le shader doit respecter afin de se conformer à l'état actuel du graphe de scène.

Documentation des types de membres

enum RenderState::DirtyState
flags RenderState::DirtyStates

ConstanteValeurDescription
QSGMaterialShader::RenderState::DirtyMatrix0x0001Utilisé pour indiquer que la matrice a changé et doit être mise à jour.
QSGMaterialShader::RenderState::DirtyOpacity0x0002Utilisé pour indiquer que l'opacité a changé et doit être mise à jour.
QSGMaterialShader::RenderState::DirtyCachedMaterialData0x0004Indique que l'état du matériau mis en cache a changé et doit être mis à jour.
QSGMaterialShader::RenderState::DirtyAll0xFFFFIndique que tout doit être mis à jour.

Le type DirtyStates est un typedef pour QFlags<DirtyState>. Il stocke une combinaison OR de valeurs DirtyState.

Documentation des fonctions membres

QMatrix4x4 RenderState::combinedMatrix() const

Renvoie la matrice combinée de la matrice de la vue du modèle et de la matrice du projet.

float RenderState::determinant() const

Renvoie le déterminant de la vue du modèle à utiliser pour le rendu.

float RenderState::devicePixelRatio() const

Renvoie le rapport entre les pixels physiques et les pixels indépendants du périphérique à utiliser pour le rendu.

QRect RenderState::deviceRect() const

Renvoie le rectangle de l'appareil de la surface sur laquelle le rendu est effectué

QSGMaterialShader::RenderState::DirtyStates RenderState::dirtyStates() const

Renvoie les états de rendu qui ont changé et qui doivent être mis à jour pour que la géométrie rendue avec ce matériau soit conforme à l'état de rendu actuel.

bool RenderState::isMatrixDirty() const

Renvoie true si dirtyStates() contient l'état de la matrice sale, sinon renvoie false.

bool RenderState::isOpacityDirty() const

Renvoie true si dirtyStates() contient l'état d'opacité sale, sinon renvoie false.

QMatrix4x4 RenderState::modelViewMatrix() const

Renvoie la matrice de vue du modèle.

Si l'option RequiresFullMatrix est activée pour le matériau, il est garanti qu'il s'agit de la matrice de transformation complète calculée à partir du graphe de scène.

Cependant, si cette option n'est pas activée, le moteur de rendu peut choisir de modifier cette matrice. Par exemple, il peut pré-transformer les sommets sur l'unité centrale et définir cette matrice comme étant une matrice d'identité.

Dans une situation telle que celle décrite ci-dessus, il est toujours possible de récupérer le déterminant réel de la matrice en activant l'indicateur RequiresDeterminant dans le matériau et en appelant l'accesseur determinant().

float RenderState::opacity() const

Renvoie l'opacité cumulée à utiliser pour le rendu.

QMatrix4x4 RenderState::projectionMatrix() const

Renvoie la matrice de projection.

QRhiResourceUpdateBatch *RenderState::resourceUpdateBatch()

Renvoie un lot de mise à jour de ressources dans lequel les opérations de téléchargement et de copie peuvent être mises en file d'attente. Cette fonction est généralement utilisée par QSGMaterialShader::updateSampledImage() pour mettre en file d'attente les mises à jour du contenu des images de texture.

QRhi *RenderState::rhi()

Renvoie l'adresse actuelle QRhi.

QByteArray *RenderState::uniformData()

Renvoie un pointeur sur les données du tampon uniforme (constant) dans le shader. Les données uniformes ne doivent être mises à jour qu'à partir de QSGMaterialShader::updateUniformData(). La valeur de retour est nulle dans les autres fonctions réimplémentables, telles que QSGMaterialShader::updateSampledImage().

Note : Il est fortement recommandé de déclarer le bloc uniforme avec std140 dans le shader, et d'étudier attentivement la disposition standard du bloc uniforme comme décrit dans la section 7.6.2.2 de la spécification OpenGL. Il appartient à l'implémentation de QSGMaterialShader de s'assurer que les données sont placées au bon endroit dans QByteArray, en tenant compte des exigences d'alignement. Le code des shaders traduit dans d'autres langages d'ombrage doit utiliser les mêmes décalages pour les membres du bloc, même si le langage cible utilise par défaut des règles d'empaquetage différentes.

Remarque : évitez de copier des types POD C++, tels que les structures, afin de mettre à jour plusieurs membres à la fois, à moins qu'il n'ait été vérifié que les dispositions de la structure C++ et du bloc uniforme GLSL correspondent.

QRect RenderState::viewportRect() const

Renvoie le rectangle de visualisation de la surface sur laquelle le rendu est effectué.

© 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.