RenderState Class
class QSGMaterialShader::RenderStateKapselt den aktuellen Rendering-Zustand während eines Aufrufs von QSGMaterialShader::updateUniformData() und den anderen Funktionen des Typs update
. Mehr...
Öffentliche Typen
enum | DirtyState { DirtyMatrix, DirtyOpacity, DirtyCachedMaterialData, DirtyAll } |
flags | DirtyStates |
Öffentliche Funktionen
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 |
Detaillierte Beschreibung
Der Rendering-Status enthält eine Reihe von Accessors, die der Shader beachten muss, um dem aktuellen Zustand des Szenegraphen zu entsprechen.
Dokumentation der Mitgliedstypen
enum RenderState::DirtyState
flags RenderState::DirtyStates
Konstante | Wert | Beschreibung |
---|---|---|
QSGMaterialShader::RenderState::DirtyMatrix | 0x0001 | Wird verwendet, um anzuzeigen, dass sich die Matrix geändert hat und aktualisiert werden muss. |
QSGMaterialShader::RenderState::DirtyOpacity | 0x0002 | Wird verwendet, um anzuzeigen, dass sich die Opazität geändert hat und aktualisiert werden muss. |
QSGMaterialShader::RenderState::DirtyCachedMaterialData | 0x0004 | Wird verwendet, um anzuzeigen, dass sich der Status des zwischengespeicherten Materials geändert hat und aktualisiert werden muss. |
QSGMaterialShader::RenderState::DirtyAll | 0xFFFF | Wird verwendet, um anzuzeigen, dass alles aktualisiert werden muss. |
Der Typ DirtyStates ist ein Typedef für QFlags<DirtyState>. Er speichert eine ODER-Kombination von DirtyState-Werten.
Dokumentation der Mitgliedsfunktionen
QMatrix4x4 RenderState::combinedMatrix() const
Gibt die Matrix zurück, die sich aus der Matrix der Modellansicht und der Projektmatrix zusammensetzt.
float RenderState::determinant() const
Gibt die Determinante der Modellansicht zurück, die für das Rendering verwendet werden soll.
float RenderState::devicePixelRatio() const
Gibt das Verhältnis zwischen physischen Pixeln und geräteunabhängigen Pixeln zurück, das für das Rendering verwendet werden soll.
QRect RenderState::deviceRect() const
Gibt das Geräte-Rect der Oberfläche zurück, auf die gerendert wird
QSGMaterialShader::RenderState::DirtyStates RenderState::dirtyStates() const
Gibt zurück, welche Rendering-Zustände sich geändert haben und aktualisiert werden müssen, damit die mit diesem Material gerenderte Geometrie dem aktuellen Rendering-Zustand entspricht.
bool RenderState::isMatrixDirty() const
Gibt true
zurück, wenn dirtyStates() den Zustand der schmutzigen Matrix enthält, andernfalls gibt es false
zurück.
bool RenderState::isOpacityDirty() const
Gibt true
zurück, wenn dirtyStates() den Zustand der schmutzigen Deckkraft enthält, andernfalls false
.
QMatrix4x4 RenderState::modelViewMatrix() const
Gibt die Matrix der Modellansicht zurück.
Wenn das Material das RequiresFullMatrix-Flag gesetzt hat, ist dies garantiert die vollständige Transformationsmatrix, die aus dem Szenegraphen berechnet wurde.
Wenn dieses Flag jedoch nicht gesetzt ist, kann der Renderer diese Matrix ändern. Zum Beispiel kann er Eckpunkte auf der CPU vorverwandeln und diese Matrix auf Identität setzen.
In einer Situation wie der obigen ist es immer noch möglich, die tatsächliche Matrixdeterminante abzurufen, indem das RequiresDeterminant-Flag im Material gesetzt und der Zugriffsfaktor determinant() aufgerufen wird.
float RenderState::opacity() const
Gibt die kumulierte Deckkraft zurück, die für das Rendering verwendet werden soll.
QMatrix4x4 RenderState::projectionMatrix() const
Gibt die Projektionsmatrix zurück.
QRhiResourceUpdateBatch *RenderState::resourceUpdateBatch()
Gibt einen Stapel von Ressourcenaktualisierungen zurück, die in eine Warteschlange für Upload- und Kopiervorgänge gestellt werden können. Dies wird normalerweise von QSGMaterialShader::updateSampledImage() verwendet, um Aktualisierungen von Texturbildinhalten in die Warteschlange zu stellen.
QRhi *RenderState::rhi()
Gibt die aktuelle QRhi zurück.
QByteArray *RenderState::uniformData()
Gibt einen Zeiger auf die Daten für den einheitlichen (konstanten) Puffer im Shader zurück. Einheitliche Daten dürfen nur von QSGMaterialShader::updateUniformData() aus aktualisiert werden. Der Rückgabewert ist null in den anderen reimplementierbaren Funktionen, wie QSGMaterialShader::updateSampledImage().
Hinweis: Es wird dringend empfohlen, den Uniform-Block mit std140
im Shader zu deklarieren und das Standard-Uniform-Block-Layout, wie in Abschnitt 7.6.2.2 der OpenGL-Spezifikation beschrieben, sorgfältig zu studieren. Es liegt an der QSGMaterialShader Implementierung, sicherzustellen, dass die Daten an der richtigen Stelle in diesem QByteArray platziert werden, wobei die Ausrichtungsanforderungen berücksichtigt werden. Von Shader-Code, der in andere Shading-Sprachen übersetzt wird, wird erwartet, dass er die gleichen Offsets für Blockelemente verwendet, selbst wenn die Zielsprache standardmäßig andere Packing-Regeln verwendet.
Hinweis: Vermeiden Sie das Kopieren von C++ POD-Typen, wie z. B. structs, um mehrere Member auf einmal zu aktualisieren, es sei denn, es wurde überprüft, dass die Layouts des C++ struct und des GLSL uniform block übereinstimmen.
QRect RenderState::viewportRect() const
Gibt das Viewport-Rect der Oberfläche zurück, auf die gerendert wird.
© 2025 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.