- class QSGNode#
-
继承者:
QSGTransformNode
、QSGTextNode
、QSGRenderNode
、QSGOpacityNode
、QSGBasicGeometryNode
、QSGGeometryNode
、QSGSimpleTextureNode
、QSGSimpleRectNode
、QSGRectangleNode
、QSGClipNode
概述#
方法#
def
__init__()
def
childAtIndex()
def
childCount()
def
clearDirty()
def
dirtyState()
def
firstChild()
def
flags()
def
lastChild()
定义
markDirty()
定义
parent()
定义
setFlag()
定义
setFlags()
定义
type()
虚函数##
注释
本文档可能包含从C++自动翻译到Python的片段。我们始终欢迎对片段翻译的贡献。如果您发现翻译中的问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建问题进行告知
详细描述##
QSGNode
类可以用作子容器。子节点通过appendChildNode()
、prependChildNode()
、insertChildNodeBefore()
和insertChildNodeAfter()
添加。节点的顺序很重要,因为几何节点是按照它们在场景图中的顺序进行渲染的。场景图节点包含一种机制,用于描述场景中哪些部分已发生变化。这包括组合矩阵、累积不透明度、节点层次结构的变更等。这些信息可用于优化场景图渲染器内部。当节点发生变化时,为了使渲染器正确渲染节点,用户必须使用正确的标志调用
markDirty()
。节点类的许多函数将隐式调用markDirty()
。例如,appendChildNode()
将调用markDirty()
并将DirtyNodeAdded
作为参数传递。如果每个帧都更改节点,则可以使用
preprocess()
函数将节点更改应用于每帧渲染。使用preprocess()
时,必须显式启用节点上的UsePreprocess
标志。虚拟的
isSubtreeBlocked()
函数可以用来完全禁用一个子树。被禁用的子树中的节点将不会执行preprocess()
操作且不会进行渲染。注释
所有带有QSG前缀的类都应仅在场景图的渲染线程上使用。有关更多信息,请参阅场景图和渲染。
- class NodeType#
用于确定节点的类型。
常量
描述
QSGNode.BasicNodeType
QSGNode
的类型QSGNode.GeometryNodeType
QSGNode.TransformNodeType
QSGNode.ClipNodeType
QSGClipNode
的类型QSGNode.OpacityNodeType
QSGNode.RenderNodeType
另请参阅
- class Flag#
(继承自
enum.Flag
) QSGNode::Flag 枚举描述了 QSGNode 上的标志。常量
描述
QSGNode.OwnedByParent
节点由其父节点拥有,当父节点被删除时,该节点也将被删除。
QSGNode.UsePreprocess
在渲染开始之前,将调用节点虚拟的
preprocess()
函数。QSGNode.OwnsGeometry
仅适用于
QSGGeometryNode
和QSGClipNode
。节点拥有QSGGeometry
实例的所有权,并在节点被销毁或分配几何体时删除它。QSGNode.OwnsMaterial
仅适用于
QSGGeometryNode
。节点控制材质,并在节点被销毁或分配材质时删除它。QSGNode.OwnsOpaqueMaterial
仅适用于
QSGGeometryNode
。节点控制不透明材质,并在节点被销毁或分配材质时删除它。QSGNode.InternalReserved
仅供内部使用。
- class DirtyStateBit#
(继承自
enum.Flag
) 用来指示场景图如何改变,在markDirty()
中使用。常量
描述
QSGNode.DirtyMatrix
QSGTransformNode
中的矩阵已更改。QSGNode.DirtyNodeAdded
添加了一个节点。
QSGNode.DirtyNodeRemoved
删除了一个节点。
QSGNode.DirtyGeometry
QSGGeometryNode
的几何体已更改。QSGNode.DirtyMaterial
QSGGeometryNode
的材质已更改。QSGNode.DirtyOpacity
QSGOpacityNode
的不透明度已更改。QSGNode.DirtySubtreeBlocked
子树已被阻断。
另请参阅
- __init__()
构造一个新的节点
将节点
node
添加到该节点的子节点列表中。节点的排序很重要,因为几何节点将按它们添加到场景图的顺序进行渲染。
返回索引
i
处的子节点。子节点内部存储为一个链表,因此通过索引遍历子节点是次优的。
- childCount()#
- 返回类型:
int
返回子节点数量。
- clearDirty()#
注释
此函数已弃用。
- dirtyState()#
- 返回类型:
注释
此函数已弃用。
返回此节点第一个子节点。
子节点存储在一个链表中。
返回此节点的标志集合。
另请参阅
将节点
node
插入到该节点的子节点列表中,该列表中指定的节点之后。节点的排序很重要,因为几何节点将按它们添加到场景图的顺序进行渲染。
将节点
node
插入到该节点的子节点列表中,在指定的节点之前。节点的排序很重要,因为几何节点将按它们添加到场景图的顺序进行渲染。
- isSubtreeBlocked()#
- 返回类型:
bool
返回此节点及其子树是否可使用。
被阻塞的子树不会更新其脏状态,也不会被渲染。
例如,
QSGOpacityNode
在累积不透明度为 0 时会返回被阻塞的子树。返回此节点的最后一个子节点。
子节点以链表的形式存储。
- markDirty(bits)#
- 参数:
bits -
DirtyStateBit
的组合
通知所有已连接的渲染器节点具有脏的
bits
。返回父节点子列表中位于此节点后的节点。
子节点以链表的形式存储。
返回此节点的父节点。
将
node
添加到此节点子节点列表的开头。节点的排序很重要,因为几何节点将按它们添加到场景图的顺序进行渲染。
- preprocess()#
覆盖此函数,在节点渲染之前对其进行处理。
需要在设置标志
UsePreprocess
以启用预处理。标志在节点添加到场景图之前需要设置,并在节点每帧渲染时调用 preprocess() 函数。警告
注意在节点预处理期间删除节点。在性能损失很小的情况下,可以在节点自己的预处理调用期间删除单个节点。删除包含使用预处理节点的子树可能会导致段错误。这是为了性能原因。
返回父节点子列表中位于此节点之前的节点。
子节点以链表的形式存储。
- removeAllChildNodes()#
从此节点子节点列表中删除所有子节点。
从此节点子节点列表中删除
node
。如果
enabled
为真,则在此节点上设置标志f
;否则清除标志。另请参阅
如果
enabled
为真,则在此节点上设置标志f
;否则清除标志。另请参阅
返回此节点的类型。节点类型必须是
NodeType
中定义的预定义类型之一,可以安全地用于转换为相应的类。