QSGGeometryNode 类

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

头文件 #include <QSGGeometryNode>
CMakefind_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmakeQT += quick
继承自 QSGBasicGeometryNode
继承

QSGImageNodeQSGRectangleNodeQSGSimpleRectNodeQSGSimpleTextureNode

公共函数

QSGGeometryNode()
virtual~QSGGeometryNode() override
QSGMaterial *material() const
QSGMaterial *opaqueMaterial() const
voidsetMaterial(QSGMaterial *material)
voidsetOpaqueMaterial(QSGMaterial *material)

详细描述

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

在将几何形状节点添加到场景图之前,它必须包含几何形状和常规材质。当节点添加到场景图后更改几何形状和材质时,用户还应使用 QSGNode::markDirty 标记它们为脏。

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

注意:应仅在使用场景图渲染线程的情况下使用以 QSG 前缀开头的所有类。有关更多信息,请参阅 场景图和渲染

另请参阅 QSGGeometryQSGMaterial

成员函数文档

QSGGeometryNode::QSGGeometryNode()

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

[覆盖虚函数 noexcept] QSGGeometryNode::~QSGGeometryNode()

删除此几何形状节点。

标志QSGNode::OwnsMaterialQSGNode::OwnsOpaqueMaterialQSGNode::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

© 2024 The Qt Company Ltd. 本文档中的文档贡献是各自所有者的版权。本文档根据由自由软件基金会发布的 GNU自由文档许可证版本 1.3 的条款提供许可。Qt 及其相关标志是芬兰和/或世界各地 The Qt Company Ltd. 的 商标。所有其他商标均为各自所有者的财产。