このページでは

QSGGeometryNode Class

QSGGeometryNode クラスは、シーングラフ内のすべてのレンダリング対象コンテンツに使用されます。詳細...

ヘッダー: #include <QSGGeometryNode>
CMake: find_package(Qt6 REQUIRED COMPONENTS Quick)
target_link_libraries(mytarget PRIVATE Qt6::Quick)
qmake: QT += quick
継承元: QSGBasicGeometryNode
継承元:

QSGImageNode、QSGRectangleNode 、QSGSimpleRectNode 、およびQSGSimpleTextureNode

パブリック関数

QSGGeometryNode()
virtual ~QSGGeometryNode() override
QSGMaterial *material() const
QSGMaterial *opaqueMaterial() const
void setMaterial(QSGMaterial *material)
void setOpaqueMaterial(QSGMaterial *material)

詳細な説明

QSGGeometryNode は、ジオメトリとマテリアルで構成されます。ジオメトリは、描画されるメッシュ、頂点、およびそれらの構造を定義します。マテリアルは、形状の塗りつぶし方法を定義します。

以下は、QSGGeometryNode を使用して赤い線を作成する方法を示すコードスニペットです。

QSGGeometry *geometry = new QSGGeometry(QSGGeometry::defaultAttributes_Point2D(), 2);
geometry->setDrawingMode(QSGGeometry::DrawLines);
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() を使用してそれらを「変更済み」としてマークする必要があります。

ジオメトリノードは、opaqueMaterial とnormal materialの2種類のマテリアルをサポートしています。opaqueMaterial は、レンダリング時のシーングラフの累積不透明度が1である場合に使用されます。主な使用例は、不透明なレンダリングを特別なケースとして扱うことで、フラグメントシェーダーでの余分な演算を回避することです。これは、組み込みグラフィックスチップにおいてパフォーマンスに大きな影響を与える可能性があるためです。opaque materialはオプションです。

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

関連項目: QSGGeometry およびQSGMaterial 。

メンバ関数のドキュメント

QSGGeometryNode::QSGGeometryNode()

ジオメトリやマテリアルを持たない新しいジオメトリノードを作成します。

[override virtual noexcept] QSGGeometryNode::~QSGGeometryNode()

このジオメトリノードを削除します。

フラグ「QSGNode::OwnsMaterial 」、「QSGNode::OwnsOpaqueMaterial 」、「QSGNode::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 」に設定します。

この不透明マテリアルは、material() 関数によって返されるデフォルトのマテリアルよりも、レンダラーによって優先されます。ただし、このマテリアルが null ではなく、かつジオメトリ項目の継承された不透明度が 1 である場合に限ります。

不透明度はシーングラフの不透明度を指しますが、マテリアルは引き続きQSGMaterial::Blending を true に設定して、透明なピクセルを描画することができます。

setOpaqueMaterial() を再度呼び出さずにマテリアルが変更された場合、ユーザーはQSGNode::markDirty() を使用して不透明マテリアルを「変更済み」としてマークする必要があります。

opaqueMaterial()も参照してください 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.