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 |
- 継承メンバを含む全メンバのリスト
- QSGNode はQt Quick Scene Graph Node クラスの一部です。
パブリックタイプ
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::DirtyMatrix | 0x0100 | QSGTransformNode の行列が変更されました。 |
QSGNode::DirtyNodeAdded | 0x0400 | ノードが追加された。 |
QSGNode::DirtyNodeRemoved | 0x0800 | ノードが削除された。 |
QSGNode::DirtyGeometry | 0x1000 | QSGGeometryNode のジオメトリが変更されました。 |
QSGNode::DirtyMaterial | 0x2000 | QSGGeometryNode のマテリアルが変更されました。 |
QSGNode::DirtyOpacity | 0x4000 | QSGOpacityNode の不透明度が変更されました。 |
QSGNode::DirtySubtreeBlocked | 0x0080 | サブツリーがブロックされました。 |
DirtyState 型はQFlags<DirtyStateBit> の typedef です。DirtyStateBit値のORの組み合わせを格納する。
QSGNode::markDirty()も参照してください 。
enum QSGNode::Flag
flags QSGNode::Flags
QSGNode::Flag enum は、QSGNode::Flags のフラグを記述します。QSGNode
定数 | 値 | 説明 |
---|---|---|
QSGNode::OwnedByParent | 0x0001 | ノードは親によって所有され、親が削除されると削除されます。 |
QSGNode::UsePreprocess | 0x0002 | ノードの仮想preprocess() 関数は、レンダリング開始前に呼び出されます。 |
QSGNode::OwnsGeometry | 0x00010000 | QSGGeometryNode とQSGClipNode でのみ有効です。ノードはQSGGeometry インスタンスの所有権を持ち、ノードが破棄されるかジオメトリが割り当てられると削除されます。 |
QSGNode::OwnsMaterial | 0x00020000 | QSGGeometryNode に対してのみ有効です。このノードはマテリアルの所有権を持ち、ノードが破棄されるか、マテリアルが割り当てられると削除されます。 |
QSGNode::OwnsOpaqueMaterial | 0x00040000 | QSGGeometryNode に対してのみ有効です。このノードは不透明マテリアルの所有権を持ち、ノードが破棄されるかマテリアルが割り当てられると削除されます。 |
QSGNode::InternalReserved | 0x01000000 | 内部用に予約されています。 |
Flags 型はQFlags<Flag> の typedef です。Flag値のORの組み合わせを格納する。
enum QSGNode::NodeType
ノードのタイプを把握するために使用できる。
定数 | 値 | 説明 |
---|---|---|
QSGNode::BasicNodeType | 0 | ノードのタイプQSGNode |
QSGNode::GeometryNodeType | 1 | ノードのタイプQSGGeometryNode |
QSGNode::TransformNodeType | 2 | のタイプQSGTransformNode |
QSGNode::ClipNodeType | 3 | のタイプQSGClipNode |
QSGNode::OpacityNodeType | 4 | のタイプQSGOpacityNode |
QSGNode::RenderNodeType | 6 | のタイプ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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。