QSGGeometryNode Class

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

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

QSGImageNode, QSGRectangleNode, QSGSimpleRectNode, and 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(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() を使用してそれらをダーティとしてマークする必要があります。

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

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

QSGGeometry およびQSGMaterialも参照して ください。

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

QSGGeometryNode::QSGGeometryNode()

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

[override virtual 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 に設定します。

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

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

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

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

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