QSGGeometryNode Class

Die Klasse QSGGeometryNode wird für alle gerenderten Inhalte im Szenegraph verwendet. Mehr...

Kopfzeile: #include <QSGGeometryNode>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
Vererbt: QSGBasicGeometryNode
Vererbt von:

QSGImageNode, QSGRectangleNode, QSGSimpleRectNode, und QSGSimpleTextureNode

Öffentliche Funktionen

QSGGeometryNode()
virtual ~QSGGeometryNode() override
QSGMaterial *material() const
QSGMaterial *opaqueMaterial() const
void setMaterial(QSGMaterial *material)
void setOpaqueMaterial(QSGMaterial *material)

Detaillierte Beschreibung

Der QSGGeometryNode besteht aus Geometrie und Material. Die Geometrie definiert das zu zeichnende Netz, die Scheitelpunkte und deren Struktur. Das Material definiert, wie die Form gefüllt wird.

Das folgende Codeschnipsel veranschaulicht, wie man eine rote Linie mit einem QSGGeometryNode erstellt:

QSGGeometry *geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), 2);
geometry->setDrawingMode(GL_LINES);
geometry->setLineWidth(3);
geometry->vertexDataAsPoint2D()[0].set(0, 0);
geometry->vertexDataAsPoint2D()[1].set(width(), height());

QSGFlatColorMaterial *material = new QSGFlatColorMaterial;
material->setColor(QColor(255, 0, 0));

QSGGeometryNode *node = new QSGGeometryNode;
node->setGeometry(geometry);
node->setFlag(QSGNode::OwnsGeometry);
node->setMaterial(material);
node->setFlag(QSGNode::OwnsMaterial);

Ein Geometrieknoten muss sowohl über eine Geometrie als auch über ein normales Material verfügen, bevor er dem Szenendiagramm hinzugefügt wird. Wenn die Geometrie und die Materialien nach dem Hinzufügen des Knotens zum Szenengraph geändert werden, sollte der Benutzer sie mit QSGNode::markDirty() auch als "dirty" markieren.

Der Geometrieknoten unterstützt zwei Arten von Materialien, das opaqueMaterial und das normale Material. opaqueMaterial wird verwendet, wenn die akkumulierte Deckkraft des Szenengraphen zum Zeitpunkt des Renderings 1 ist. Der primäre Anwendungsfall ist das opake Rendering, um eine zusätzliche Operation im Fragment-Shader zu vermeiden, die erhebliche Auswirkungen auf die Leistung von eingebetteten Grafikchips haben kann. Das opake Material ist optional.

Hinweis: Alle Klassen mit dem Präfix QSG sollten ausschließlich im Rendering-Thread des Szenegraphs verwendet werden. Siehe Scene Graph und Rendering für weitere Informationen.

Siehe auch QSGGeometry und QSGMaterial.

Dokumentation der Mitgliedsfunktionen

QSGGeometryNode::QSGGeometryNode()

Erzeugt einen neuen Geometrieknoten ohne Geometrie und Material.

[override virtual noexcept] QSGGeometryNode::~QSGGeometryNode()

Löscht diesen Geometrieknoten.

Die Flags QSGNode::OwnsMaterial, QSGNode::OwnsOpaqueMaterial und QSGNode::OwnsGeometry entscheiden, ob der Geometrieknoten auch die Materialien und die Geometrie löschen soll. Standardmäßig sind diese Flags deaktiviert.

QSGMaterial *QSGGeometryNode::material() const

Gibt das Material des QSGGeometryNode zurück.

Siehe auch setMaterial().

QSGMaterial *QSGGeometryNode::opaqueMaterial() const

Gibt das undurchsichtige Material des QSGGeometryNode zurück.

Siehe auch setOpaqueMaterial().

void QSGGeometryNode::setMaterial(QSGMaterial *material)

Setzt das Material dieses Geometrieknotens auf material.

Geometrieknoten müssen über ein Material verfügen, bevor sie dem Szenengraph hinzugefügt werden können.

Wenn das Material geändert wird, ohne setMaterial() erneut aufzurufen, muss der Benutzer das Material auch mit QSGNode::markDirty() als schmutzig markieren.

Siehe auch material().

void QSGGeometryNode::setOpaqueMaterial(QSGMaterial *material)

Setzt das opake Material dieser Geometrie auf material.

Das opake Material wird vom Renderer gegenüber dem von der Funktion material() zurückgegebenen Standardmaterial bevorzugt, wenn es nicht null ist und das Geometrieelement eine geerbte Opazität von 1 hat.

Die Deckkraft bezieht sich auf die Deckkraft des Szenegraphen, das Material darf QSGMaterial::Blending auf true setzen und transparente Pixel zeichnen.

Wenn das Material geändert wird, ohne setOpaqueMaterial() erneut aufzurufen, muss der Benutzer auch das opake Material mit QSGNode::markDirty() als schmutzig markieren.

Siehe auch opaqueMaterial().

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