QSGGeometryNode Class

The QSGGeometryNode class is used for all rendered content in the scene graph. 更多...

头: #include <QSGGeometryNode>
CMake: find_package(Qt6 COMPONENTS Quick REQUIRED)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
继承: QSGBasicGeometryNode
继承者: QSGImageNode , QSGRectangleNode , QSGSimpleRectNode ,和 QSGSimpleTextureNode

公共函数

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

详细描述

The QSGGeometryNode consists of geometry and material. The geometry defines the mesh, the vertices and their structure, to be drawn. The Material defines how the shape is filled.

The following is a code snippet illustrating how to create a red line using a QSGGeometryNode:

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);
					

A geometry node must have both geometry and a normal material before it is added to the scene graph. When the geometry and materials are changed after the node has been added to the scene graph, the user should also mark them as dirty using QSGNode::markDirty ().

The geometry node supports two types of materials, the opaqueMaterial and the normal material. The opaqueMaterial is used when the accumulated scene graph opacity at the time of rendering is 1. The primary use case is to special case opaque rendering to avoid an extra operation in the fragment shader can have significant performance impact on embedded graphics chips. The opaque material is optional.

注意: 所有带有 QSG 前缀的类只应用于场景图形渲染线程。见 场景图形和渲染 了解更多信息。

另请参阅 QSGGeometry and QSGMaterial .

成员函数文档编制

QSGGeometryNode:: QSGGeometryNode ()

Creates a new geometry node without geometry and material.

[override virtual] QSGGeometryNode:: ~QSGGeometryNode ()

Deletes this geometry node.

The flags QSGNode::OwnsMaterial , QSGNode::OwnsOpaqueMaterial and QSGNode::OwnsGeometry decides whether the geometry node should also delete the materials and geometry. By default, these flags are disabled.

QSGMaterial *QSGGeometryNode:: material () const

Returns the material of the QSGGeometryNode .

另请参阅 setMaterial ().

QSGMaterial *QSGGeometryNode:: opaqueMaterial () const

Returns the opaque material of the QSGGeometryNode .

另请参阅 setOpaqueMaterial ().

void QSGGeometryNode:: setMaterial ( QSGMaterial * material )

Sets the material of this geometry node to material .

Geometry nodes must have a material before they can be added to the scene graph.

If the material is changed without calling setMaterial() again, the user must also mark the material as dirty using QSGNode::markDirty ().

另请参阅 material ().

void QSGGeometryNode:: setOpaqueMaterial ( QSGMaterial * material )

Sets the opaque material of this geometry to material .

The opaque material will be preferred by the renderer over the default material, as returned by the material () function, if it is not null and the geometry item has an inherited opacity of 1.

The opaqueness refers to scene graph opacity, the material is still allowed to set QSGMaterial::Blending to true and draw transparent pixels.

If the material is changed without calling setOpaqueMaterial() again, the user must also mark the opaque material as dirty using QSGNode::markDirty ().

另请参阅 opaqueMaterial ().