class QSGGeometryNode#

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

Inheritance diagram of PySide6.QtQuick.QSGGeometryNode

继承自: QSGSimpleTextureNodeQSGSimpleRectNodeQSGRectangleNode

概述#

方法#

注意

这份文档可能包含从 C++ 到 Python 的自动翻译片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译有问题,您也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来告诉我们。

详细描述#

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

以下是一个代码示例,说明了如何使用 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);

在将几何节点添加到场景图之前,必须具有几何形状和常规材质。当节点已添加到场景图并更改几何形状和材质后,用户应使用 markDirty() 将它们标记为脏。

几何节点支持两种类型的材质,即 opaqueMaterial 和常规材质。当渲染时的场景图累积不透明度为1时使用 opaqueMaterial。主要用例是对不透明渲染进行特殊处理,以避免在片段着色器中进行额外操作,这可能对嵌入式显卡有显著的性能影响。不透明材质是可选的。

注意

所有以QSG为前缀的类应仅用于场景图的渲染线程。有关更多信息,请参阅场景图和渲染

另请参阅

QSGGeometry QSGMaterial

__init__()#

创建一个没有几何形状和材质的新几何节点。

activeMaterial()#
返回类型::

QSGMaterial

inheritedOpacity()#
返回类型::

浮点数

material()#
返回类型::

QSGMaterial

返回 QSGGeometryNode 的材质。

另请参阅

setMaterial()

opaqueMaterial()#
返回类型::

QSGMaterial

返回 QSGGeometryNode 的不透明材质。

另请参阅

setOpaqueMaterial()

renderOrder()#
返回类型::

int

setInheritedOpacity(opacity)#
参数:

opacity - 浮点数

setMaterial(material)#
参数:

material - QSGMaterial

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

几何节点必须在添加到场景图之前具有材质。

如果未再次调用 setMaterial() 更改材质,则用户还必须使用 markDirty() 将材质标记为脏。

另请参阅

material()

setOpaqueMaterial(material)#
参数:

material - QSGMaterial

将此几何的不透明材质设置为 material

如果该材质非空并且几何项具有继承的不透明度为 1,渲染程序将优先使用不透明材质,而不是默认材质(通过 material() 函数返回的)。

这里的透明度指的是场景图的不透明度,材料仍然允许将 Blending 设置为 true 并绘制透明像素。

如果更改材质而未再次调用 setOpaqueMaterial(),则用户还必须使用 markDirty() 将不透明材质标记为脏。

另请参阅

opaqueMaterial()

setRenderOrder(order)#
参数:

order - int