PySide6.QtQuick.QSGGeometryNode

class QSGGeometryNode

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

PySide6.QtQuick.QSGGeometryNode的继承图

继承自: QSGSimpleTextureNode, QSGSimpleRectNode, QSGRectangleNode, QSGNinePatchNode, QSGImageNode

概要

方法

注意

本文档可能包含从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()
Return type:

QSGMaterial

inheritedOpacity()
Return type:

浮点数

material()
Return type:

QSGMaterial

返回QSGGeometryNode的材质。

另请参阅

setMaterial()

opaqueMaterial()
Return type:

QSGMaterial

返回QSGGeometryNode的不透明材质。

另请参阅

setOpaqueMaterial()

renderOrder()
Return type:

整数

setInheritedOpacity(opacity)
Parameters:

opacity – 浮点数

setMaterial(material)
Parameters:

材质QSGMaterial

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

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

如果材料在没有再次调用setMaterial()的情况下被更改,用户还必须使用markDirty()将材料标记为脏。

另请参阅

material()

setOpaqueMaterial(material)
Parameters:

材质QSGMaterial

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

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

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

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

另请参阅

opaqueMaterial()

setRenderOrder(order)
Parameters:

order – int