本页内容

QSGGeometryNode Class

QSGGeometryNode 类用于场景图中所有渲染的内容。更多内容...

头文件: #include <QSGGeometryNode>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
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)

详细描述

QSGGeometryNode 由几何体和材质组成。几何体定义了待绘制的网格、顶点及其结构。材质定义了形状的填充方式。

以下代码片段演示了如何使用 QSGGeometryNode 创建一条红线:

QSGGeometry *geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), 2);
geometry->setDrawingMode(QSGGeometry::DrawLines);
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);

在将几何体节点添加到场景图之前,该节点必须同时具备几何体和法线材质。当节点已添加到场景图后,若修改了几何体或材质,用户还应通过调用QSGNode::markDirty() 方法将其标记为“已修改”。

几何节点支持两种材质:opaqueMaterial 和法线材质。当渲染时场景图的累积不透明度为1时,应使用opaqueMaterial 。其主要用途是将不透明渲染作为特例处理,以避免在片段着色器中进行额外操作——该操作可能会对嵌入式图形芯片造成显著的性能影响。不透明材质为可选。

注意:所有 以 QSG 为前缀的类应仅在场景图的渲染线程上使用。有关更多信息,请参阅“场景图与渲染”。

另请参阅 QSGGeometry 和QSGMaterial 。

成员函数文档

QSGGeometryNode::QSGGeometryNode()

创建一个不包含几何体和材质的新的几何节点。

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

删除此几何节点。

标志QSGNode::OwnsMaterial 、QSGNode::OwnsOpaqueMaterial 和QSGNode::OwnsGeometry 决定几何体节点是否应同时删除材质和几何体。默认情况下,这些标志处于禁用状态。

QSGMaterial *QSGGeometryNode::material() const

返回QSGGeometryNode 的材质。

另请参阅 setMaterial()。

QSGMaterial *QSGGeometryNode::opaqueMaterial() const

返回QSGGeometryNode 的不透明材质。

另请参阅 setOpaqueMaterial()。

void QSGGeometryNode::setMaterial(QSGMaterial *material)

将此几何体节点的材质设置为material 。

几何体节点必须先设置材质,才能将其添加到场景图中。

如果在未再次调用 setMaterial() 的情况下更改了材质,用户还必须使用QSGNode::markDirty() 将该材质标记为已修改。

另请参阅 material()。

void QSGGeometryNode::setOpaqueMaterial(QSGMaterial *material)

将该几何体的不透明材质设置为material 。

如果该不透明材质不为空,且该几何体项的继承不透明度为 1,则渲染器将优先使用该不透明材质,而非由material() 函数返回的默认材质。

该不透明度指的是场景图的不透明度,材质仍允许将QSGMaterial::Blending 设置为true并绘制透明像素。

如果在未再次调用 setOpaqueMaterial() 的情况下更改材质,用户还必须使用QSGNode::markDirty() 将不透明材质标记为“已修改”。

另请参阅 opaqueMaterial()。

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