Auf dieser Seite

QSGMaterialShader::RenderState Class

class QSGMaterialShader::RenderState

Kapseln den aktuellen Rendering-Zustand während eines Aufrufs von ` QSGMaterialShader::updateUniformData()` und anderer Funktionen vom Typ ` 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

Ausführliche Beschreibung

Der Render-Zustand enthält eine Reihe von Zugriffsmethoden, die der Shader berücksichtigen muss, um dem aktuellen Zustand des Szenengraphen zu entsprechen.

Dokumentation zum Mitgliedstyp

enum RenderState::DirtyState
flags RenderState::DirtyStates

KonstanteWertBeschreibung
QSGMaterialShader::RenderState::DirtyMatrix0x0001Wird verwendet, um anzuzeigen, dass sich die Matrix geändert hat und aktualisiert werden muss.
QSGMaterialShader::RenderState::DirtyOpacity0x0002Wird verwendet, um anzuzeigen, dass sich die Deckkraft geändert hat und aktualisiert werden muss.
QSGMaterialShader::RenderState::DirtyCachedMaterialData0x0004Wird verwendet, um anzuzeigen, dass sich der zwischengespeicherte Materialzustand geändert hat und aktualisiert werden muss.
QSGMaterialShader::RenderState::DirtyAll0xFFFFWird 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 Member-Funktionen

QMatrix4x4 RenderState::combinedMatrix() const

Gibt die aus der Model-View-Matrix und der Projektmatrix zusammengesetzte Matrix zurück.

float RenderState::determinant() const

Gibt die Model-View-Determinante zurück, die für die Darstellung verwendet werden soll.

float RenderState::devicePixelRatio() const

Gibt das Verhältnis zwischen physikalischen Pixeln und geräteunabhängigen Pixeln zurück, das für die Darstellung verwendet werden soll.

QRect RenderState::deviceRect() const

Gibt das Geräte-Rechteck der Oberfläche zurück, die gerade gerendert wird

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

Gibt die Rendering-Zustände zurück, die 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 „dirty“-Matrixzustand enthält, andernfalls „ false “.

bool RenderState::isOpacityDirty() const

Gibt „ true “ zurück, wenn „ dirtyStates()“ den Status „dirty opacity“ enthält, andernfalls „ false “.

QMatrix4x4 RenderState::modelViewMatrix() const

Gibt die Modell-Ansichts-Matrix zurück.

Wenn für das Material das Flag „RequiresFullMatrix“ gesetzt ist, handelt es sich hierbei garantiert um die vollständige Transformationsmatrix, die aus dem Szenengraphen berechnet wurde.

Ist dieses Flag jedoch nicht gesetzt, kann der Renderer diese Matrix möglicherweise ändern. Beispielsweise kann er Scheitelpunkte auf der CPU vorab transformieren und diese Matrix auf die Einheitsmatrix setzen.

In einem solchen Fall ist es dennoch möglich, den tatsächlichen Determinanten der Matrix abzurufen, indem das Flag „RequiresDeterminant“ im Material gesetzt und der Zugriffsoperator ` determinant()` aufgerufen wird.

float RenderState::opacity() const

Gibt die kumulierte Deckkraft zurück, die für die Darstellung verwendet werden soll.

QMatrix4x4 RenderState::projectionMatrix() const

Gibt die Projektionsmatrix zurück.

QRhiResourceUpdateBatch *RenderState::resourceUpdateBatch()

Gibt einen Ressourcen-Aktualisierungsstapel zurück, in den Upload- und Kopiervorgänge eingereiht werden können. Dies wird in der Regel von ` QSGMaterialShader::updateSampledImage()` verwendet, um Aktualisierungen von Texturbildinhalten in die Warteschlange einzureihen.

QRhi *RenderState::rhi()

Gibt den aktuellen „ QRhi “ zurück.

QByteArray *RenderState::uniformData()

Gibt einen Zeiger auf die Daten des Uniform-Puffers (Konstantenpuffers) im Shader zurück. Uniform-Daten dürfen ausschließlich über ` QSGMaterialShader::updateUniformData()` aktualisiert werden. In den anderen neu implementierbaren Funktionen, wie beispielsweise ` QSGMaterialShader::updateSampledImage()`, ist der Rückgabewert null.

Hinweis: Es wird dringend empfohlen, den Uniform-Block im Shader mit ` std140 ()` zu deklarieren und das in Abschnitt 7.6.2.2 der OpenGL-Spezifikation beschriebene Standard-Layout für Uniform-Blöcke sorgfältig zu studieren. Es obliegt der Implementierung von ` QSGMaterialShader `, sicherzustellen, dass die Daten unter Berücksichtigung der Ausrichtungsanforderungen an der richtigen Stelle in diesem ` QByteArray` platziert werden. Es wird erwartet, dass Shader-Code, der in andere Shading-Sprachen übersetzt wurde, dieselben Offsets für Blockelemente verwendet, selbst wenn die Zielsprache standardmäßig andere Packing-Regeln verwendet.

Hinweis: Vermeiden Sie das Kopieren aus C++-POD-Typen, wie z. B. Strukturen, um mehrere Mitglieder gleichzeitig zu aktualisieren, es sei denn, es wurde überprüft, dass die Layouts der C++-Struktur und des GLSL-Uniform-Blocks übereinstimmen.

QRect RenderState::viewportRect() const

Gibt das Viewport-Rechteck der Oberfläche zurück, auf die gerendert wird.

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