QSGNode Class

QSGNode クラスは、シーングラフ内のすべてのノードの基本クラスです。詳細...

Header: #include <QSGNode>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
Inherited By:

QSGBasicGeometryNode, QSGOpacityNode, QSGRenderNode, and QSGTransformNode

パブリックタイプ

flags DirtyState
enum DirtyStateBit { DirtyMatrix, DirtyNodeAdded, DirtyNodeRemoved, DirtyGeometry, DirtyMaterial, …, DirtySubtreeBlocked }
enum Flag { OwnedByParent, UsePreprocess, OwnsGeometry, OwnsMaterial, OwnsOpaqueMaterial, InternalReserved }
flags Flags
enum NodeType { BasicNodeType, GeometryNodeType, TransformNodeType, ClipNodeType, OpacityNodeType, RenderNodeType }

パブリック関数

QSGNode()
virtual ~QSGNode()
void appendChildNode(QSGNode *node)
QSGNode *childAtIndex(int i) const
int childCount() const
QSGNode *firstChild() const
QSGNode::Flags flags() const
void insertChildNodeAfter(QSGNode *node, QSGNode *after)
void insertChildNodeBefore(QSGNode *node, QSGNode *before)
virtual bool isSubtreeBlocked() const
QSGNode *lastChild() const
void markDirty(QSGNode::DirtyState bits)
QSGNode *nextSibling() const
QSGNode *parent() const
void prependChildNode(QSGNode *node)
virtual void preprocess()
QSGNode *previousSibling() const
void removeAllChildNodes()
void removeChildNode(QSGNode *node)
void setFlag(QSGNode::Flag f, bool enabled = true)
void setFlags(QSGNode::Flags f, bool enabled = true)
QSGNode::NodeType type() const

詳細説明

QSGNode クラスは、子コンテナとして使用できます。子ノードはappendChildNode(),prependChildNode(),insertChildNodeBefore(),insertChildNodeAfter() で追加されます。ジオメトリ・ノードはシーン・グラフ内の順序に従ってレンダリングされるため、ノードの順序は重要です。

シーングラフのノードには、シーンのどの部分が変更されたかを記述するメカニズムが含まれています。これには、結合されたマトリックス、累積された不透明度、ノード階層の変更などが含まれます。この情報は、シーン グラフ レンダラー内部の最適化に使用できます。レンダラーがノードを適切にレンダリングするには、ノードが変更されたときに、ユーザーが正しいフラグを指定してQSGNode::markDirty() を呼び出すことが重要です。ノードクラスの関数のほとんどは、markDirty ()を暗黙的に呼び出します。たとえば、QSGNode::appendChildNode() はQSGNode::DirtyNodeAdded を渡してmarkDirty() を呼び出します。

ノードがフレームごとに変更される場合、preprocess ()関数を使用すると、レンダリングされるフレームごとにノードに変更を適用できます。preprocess() の使用は、ノードにQSGNode::UsePreprocess フラグを設定して明示的に有効にする必要があります。

仮想isSubtreeBlocked() 関数を使用すると、サブツリーを一括して無効にできます。ブロックされたサブツリー内のノードは前処理()されず、レンダリングされません。

注意: QSG 接頭辞を持つすべてのクラスは、シーングラフのレンダリングスレッドでのみ使用する必要があります。詳細については、シーングラフとレンダリングを参照してください。

メンバ型ドキュメント

enum QSGNode::DirtyStateBit
flags QSGNode::DirtyState

シーングラフがどのように変更されたかを示すためにQSGNode::markDirty() で使用されます。

定数説明
QSGNode::DirtyMatrix0x0100QSGTransformNode の行列が変更されました。
QSGNode::DirtyNodeAdded0x0400ノードが追加された。
QSGNode::DirtyNodeRemoved0x0800ノードが削除された。
QSGNode::DirtyGeometry0x1000QSGGeometryNode のジオメトリが変更されました。
QSGNode::DirtyMaterial0x2000QSGGeometryNode のマテリアルが変更されました。
QSGNode::DirtyOpacity0x4000QSGOpacityNode の不透明度が変更されました。
QSGNode::DirtySubtreeBlocked0x0080サブツリーがブロックされました。

DirtyState 型はQFlags<DirtyStateBit> の typedef です。DirtyStateBit値のORの組み合わせを格納する。

QSGNode::markDirty()も参照してください

enum QSGNode::Flag
flags QSGNode::Flags

QSGNode::Flag enum は、QSGNode::Flags のフラグを記述します。QSGNode

定数説明
QSGNode::OwnedByParent0x0001ノードは親によって所有され、親が削除されると削除されます。
QSGNode::UsePreprocess0x0002ノードの仮想preprocess() 関数は、レンダリング開始前に呼び出されます。
QSGNode::OwnsGeometry0x00010000QSGGeometryNodeQSGClipNode でのみ有効です。ノードはQSGGeometry インスタンスの所有権を持ち、ノードが破棄されるかジオメトリが割り当てられると削除されます。
QSGNode::OwnsMaterial0x00020000QSGGeometryNode に対してのみ有効です。このノードはマテリアルの所有権を持ち、ノードが破棄されるか、マテリアルが割り当てられると削除されます。
QSGNode::OwnsOpaqueMaterial0x00040000QSGGeometryNode に対してのみ有効です。このノードは不透明マテリアルの所有権を持ち、ノードが破棄されるかマテリアルが割り当てられると削除されます。
QSGNode::InternalReserved0x01000000内部用に予約されています。

Flags 型はQFlags<Flag> の typedef です。Flag値のORの組み合わせを格納する。

enum QSGNode::NodeType

ノードのタイプを把握するために使用できる。

定数説明
QSGNode::BasicNodeType0ノードのタイプQSGNode
QSGNode::GeometryNodeType1ノードのタイプQSGGeometryNode
QSGNode::TransformNodeType2のタイプQSGTransformNode
QSGNode::ClipNodeType3のタイプQSGClipNode
QSGNode::OpacityNodeType4のタイプQSGOpacityNode
QSGNode::RenderNodeType6のタイプQSGRenderNode

type()も参照

メンバ関数ドキュメント

QSGNode::QSGNode()

新しいノードを構築する

[virtual noexcept] QSGNode::~QSGNode()

ノードを破棄する。

フラグQSGNode::OwnedByParent が設定されているこのノードの子もすべて削除されます。

void QSGNode::appendChildNode(QSGNode *node)

このノードの子のリストにnode を追加します。

ジオメトリ ノードはシーン グラフに追加された順にレンダリングされるため、ノードの順序は重要です。

QSGNode *QSGNode::childAtIndex(int i) const

インデックスi にある子を返します。

子ノードは内部的にリンクリストとして保存されるため、インデックスを使用して子ノードを反復処理することは最適ではありません。

int QSGNode::childCount() const

子ノードの数を返します。

QSGNode *QSGNode::firstChild() const

このノードの最初の子を返します。

子ノードはリンクリストに格納されます。

QSGNode::Flags QSGNode::flags() const

このノードのフラグのセットを返します。

setFlags()も参照してください

void QSGNode::insertChildNodeAfter(QSGNode *node, QSGNode *after)

after で指定したノードの後に、このノードの子ノードのリストにnode を挿入します。

ジオメトリ ノードはシーン グラフに追加された順にレンダリングされるため、ノードの順序は重要です。

void QSGNode::insertChildNodeBefore(QSGNode *node, QSGNode *before)

before で指定したノードの前に、このノードの子リストにnode を挿入します。

ジオメトリ ノードはシーン グラフに追加された順にレンダリングされるため、ノードの順序は重要です。

[virtual] bool QSGNode::isSubtreeBlocked() const

このノードとそのサブツリーが使用可能かどうかを返します。

ブロックされたサブツリーはダーティ ステートが更新されず、レンダリングされません。

QSGOpacityNode は、例えば累積不透明度が 0 の場合、ブロックされたサブツリーを返します。

QSGNode *QSGNode::lastChild() const

このノードの最後の子を返します。

子はリンク リストとして格納されます。

void QSGNode::markDirty(QSGNode::DirtyState bits)

接続されているすべてのレンダラーに、ノードがダーティなbits を持っていることを通知します。

QSGNode *QSGNode::nextSibling() const

親の子のリストで、このノードの次のノードを返します。

子ノードはリンク リストとして格納されます。

QSGNode *QSGNode::parent() const

このノードの親ノードを返します。

void QSGNode::prependChildNode(QSGNode *node)

このノードの子のリストにnode を付加します。

ジオメトリノードはシーングラフに追加された順にレンダリングされるため、ノードの順序は重要です。

[virtual] void QSGNode::preprocess()

この関数をオーバーライドすると、レンダリング前にノードに対して処理を行うことができます。

前処理は、フラグQSGNode::UsePreprocess を設定して明示的に有効にする必要があります。このフラグはノードがシーングラフに追加される前に設定する必要があり、ノードがレンダリングされるフレームごとに preprocess() 関数が呼び出されます。

警告 前処理中のノードの削除に注意してください。わずかなパフォーマンス・ヒットを伴いますが、自身のプリプロセス呼び出し中に 1 つのノードを削除することは可能です。前処理も使用するノードを持つサブツリーを削除すると、セグメンテーション・フォールトが発生する可能性があります。これはパフォーマンス上の理由によるものです。

QSGNode *QSGNode::previousSibling() const

親の子リストの中で、このノードの前にあるノードを返します。

子ノードはリンクリストとして格納されます。

void QSGNode::removeAllChildNodes()

このノードの子ノードリストからすべての子ノードを削除します。

void QSGNode::removeChildNode(QSGNode *node)

このノードの子リストからnode を削除します。

void QSGNode::setFlag(QSGNode::Flag f, bool enabled = true)

enabled が真の場合、このノードにフラグf を設定します。そうでない場合、フラグをクリアします。

flags()も参照してください

void QSGNode::setFlags(QSGNode::Flags f, bool enabled = true)

enabled が true の場合、このノードにフラグf を設定します。

flags()も参照

QSGNode::NodeType QSGNode::type() const

このノードのタイプを返します。ノードの型は、QSGNode::NodeType で定義されている定義済みの型のいずれかでなければならず、対応するクラスへのキャストに安全に使用できます。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。