QSGGeometry Class
QSGGeometry クラスは、Qt Quick Scene Graphs のグラフィックスプリミティブの低レベルストレージを提供します。詳細...
Header: | #include <QSGGeometry> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Quick) target_link_libraries(mytarget PRIVATE Qt6::Quick) |
qmake: | QT += quick |
パブリック型
struct | Attribute |
struct | AttributeSet |
struct | ColoredPoint2D |
struct | Point2D |
struct | TexturedPoint2D |
enum | AttributeType { UnknownAttribute, PositionAttribute, ColorAttribute, TexCoordAttribute, TexCoord1Attribute, TexCoord2Attribute } |
enum | DataPattern { AlwaysUploadPattern, DynamicPattern, StaticPattern, StreamPattern } |
enum | DrawingMode { DrawPoints, DrawLines, DrawLineStrip, DrawTriangles, DrawTriangleStrip } |
enum | Type { ByteType, UnsignedByteType, ShortType, UnsignedShortType, IntType, …, DoubleType } |
パブリック関数
QSGGeometry(const QSGGeometry::AttributeSet &attributes, int vertexCount, int indexCount = 0, int indexType = UnsignedShortType) | |
virtual | ~QSGGeometry() |
void | allocate(int vertexCount, int indexCount = 0) |
int | attributeCount() const |
const QSGGeometry::Attribute * | attributes() const |
unsigned int | drawingMode() const |
int | indexCount() const |
void * | indexData() |
const void * | indexData() const |
uint * | indexDataAsUInt() |
const uint * | indexDataAsUInt() const |
quint16 * | indexDataAsUShort() |
const quint16 * | indexDataAsUShort() const |
QSGGeometry::DataPattern | indexDataPattern() const |
int | indexType() const |
float | lineWidth() const |
void | markIndexDataDirty() |
void | markVertexDataDirty() |
void | setDrawingMode(unsigned int mode) |
void | setIndexDataPattern(QSGGeometry::DataPattern p) |
void | setLineWidth(float width) |
void | setVertexDataPattern(QSGGeometry::DataPattern p) |
int | sizeOfIndex() const |
int | sizeOfVertex() const |
int | vertexCount() const |
void * | vertexData() |
const void * | vertexData() const |
QSGGeometry::ColoredPoint2D * | vertexDataAsColoredPoint2D() |
const QSGGeometry::ColoredPoint2D * | vertexDataAsColoredPoint2D() const |
QSGGeometry::Point2D * | vertexDataAsPoint2D() |
const QSGGeometry::Point2D * | vertexDataAsPoint2D() const |
QSGGeometry::TexturedPoint2D * | vertexDataAsTexturedPoint2D() |
const QSGGeometry::TexturedPoint2D * | vertexDataAsTexturedPoint2D() const |
QSGGeometry::DataPattern | vertexDataPattern() const |
静的パブリックメンバー
const QSGGeometry::AttributeSet & | defaultAttributes_ColoredPoint2D() |
const QSGGeometry::AttributeSet & | defaultAttributes_Point2D() |
const QSGGeometry::AttributeSet & | defaultAttributes_TexturedPoint2D() |
void | updateColoredRectGeometry(QSGGeometry *g, const QRectF &rect) |
void | updateRectGeometry(QSGGeometry *g, const QRectF &rect) |
void | updateTexturedRectGeometry(QSGGeometry *g, const QRectF &rect, const QRectF &textureRect) |
詳細な説明
QSGGeometry クラスは、シーングラフでレンダリングされたプリミティブのジオメトリを格納します。頂点データと、オプションでインデックスデータが含まれる。プリミティブのトポロジーとも呼ばれるジオメトリの描画に使用されるモードは、setDrawingMode() で指定します。
頂点は x と y の値で定義される点のような単純なものから、各頂点が法線、テクスチャ座標、3D 位置を含むような複雑なものまであります。QSGGeometry::AttributeSet は、頂点データの構築方法を記述するために使用されます。属性セットは構築時にのみ指定できます。QSGGeometry クラスは、デフォルトでいくつかの便利な属性と属性セットを提供します。defaultAttributes_Point2D() 関数は通常のベタ塗り長方形で使用する属性セットを返し、defaultAttributes_TexturedPoint2D 関数はテクスチャ付き 2D ジオメトリで使用する属性を返します。頂点データは内部的にvoid *
として保存され、vertexData() 関数でアクセスできます。一般的なアトリビュート・セットの便利なアクセッサは、vertexDataAsPoint2D() とvertexDataAsTexturedPoint2D() で利用できます。頂点データは、コンストラクタに頂点数を渡すか、後でallocate() を呼び出すことで割り当てられます。
QSGGeometry には、符号なし 32 ビット、符号なし 16 ビット、または符号なし 8 ビット整数のいずれかのインデックスを含めることができます。インデックスの型は作成時に指定する必要があり、変更することはできません。
以下は、位置と色の頂点で構成されるジオメトリの作成方法を示すスニペットです。
struct MyPoint2D { float x; float y; float r; float g; float b; float a; void set(float x_, float y_, float r_, float g_, float b_, float a_) { x = x_; y = y_; r = r_; g = g_; b = b_; a = a_; } }; QSGGeometry::Attribute MyPoint2D_Attributes[] = { QSGGeometry::Attribute::create(0, 2, FloatType, true), QSGGeometry::Attribute::create(1, 4, FloatType, false) }; QSGGeometry::AttributeSet MyPoint2D_AttributeSet = { 2, sizeof(MyPoint2D), MyPoint2D_Attributes }; ... geometry = new QSGGeometry(MyPoint2D_AttributeSet, 2); geometry->setDrawingMode(DrawLines); MyPoint2D *vertices = static_cast<MyPoint2D *>(geometry->vertexData()); vertices[0].set(0, 0, 1, 0, 0, 1); vertices[1].set(width(), height(), 0, 0, 1, 1);
QSGGeometry はソフトウェア・バッファであり、2D グラフィックスで使用されるバッファは通常、フレームごとに変化する多数の小さなバッファで構成され、グラフィックス・メモリにアップロードされるメリットがないため、レンダリングの高速化という点ではクライアント側である。ただし、QSGGeometry は、setVertexDataPattern ()とsetIndexDataPattern ()関数を使用して、バッファをアップロードする必要があることをレンダラーに示すヒントをサポートしています。このヒントが尊重されるかどうかは、実装によって異なります。
注意: QSG 接頭辞を持つすべてのクラスは、シーングラフのレンダリングスレッドでのみ使用する必要があります。詳しくはScene Graph と Renderingを参照してください。
QSGGeometryNode とScene Graph - Custom Geometryも参照してください 。
メンバ タイプ ドキュメンテーション
enum QSGGeometry::AttributeType
この列挙型は、いくつかの属性タイプを識別します。
定数 | 値 | 説明 |
---|---|---|
QSGGeometry::UnknownAttribute | 0 | 気にしない |
QSGGeometry::PositionAttribute | 1 | 位置 |
QSGGeometry::ColorAttribute | 2 | 色 |
QSGGeometry::TexCoordAttribute | 3 | テクスチャ座標 |
QSGGeometry::TexCoord1Attribute | 4 | テクスチャ座標1 |
QSGGeometry::TexCoord2Attribute | 5 | テクスチャ座標 2 |
enum QSGGeometry::DataPattern
DataPattern 列挙型は、ジオメトリ オブジェクトの頂点データとインデックス データの使用パターンを指定するために使用します。
定数 | 値 | 説明 |
---|---|---|
QSGGeometry::AlwaysUploadPattern | 0 | データは常にアップロードされます。つまり、インデックスと頂点のデータを変更した後、ユーザーが明示的にダーティとしてマークする必要はありません。これがデフォルトです。 |
QSGGeometry::DynamicPattern | 2 | データは繰り返し変更され、何度も描画されます。これはパフォーマンスを向上させるヒントです。設定されている場合、ユーザーはデータを変更した後に必ずダーティとしてマークする必要があります。 |
QSGGeometry::StaticPattern | 3 | データは一度だけ変更され、何度も描画されます。これはより良いパフォーマンスを提供する可能性のあるヒントです。設定すると、ユーザーはデータを変更した後に必ずダーティとしてマークする必要があります。 |
QSGGeometry::StreamPattern | 1 | データは描画されるたびに変更されます。これは、より良いパフォーマンスを提供する可能性のあるヒントです。設定すると、ユーザーはデータを変更した後に必ずダーティとしてマークする必要があります。 |
enum QSGGeometry::DrawingMode
プリミティブトポロジーとも呼ばれる描画モードを指定します。
注意: Qt 6 からシーングラフは、サポートされているすべての 3D グラフィックス API でサポートされているトポロジーのみを公開します。その結果、DrawLineLoop
とDrawTriangleFan
の値は、列挙値自体はまだ存在していても、Qt 6 では実行時にサポートされなくなりました。
定数 | 値 |
---|---|
QSGGeometry::DrawPoints | 0x0000 |
QSGGeometry::DrawLines | 0x0001 |
QSGGeometry::DrawLineStrip | 0x0003 |
QSGGeometry::DrawTriangles | 0x0004 |
QSGGeometry::DrawTriangleStrip | 0x0005 |
enum QSGGeometry::Type
頂点データのコンポーネントタイプを指定します。
定数 | 値 | 説明 |
---|---|---|
QSGGeometry::ByteType | 0x1400 | |
QSGGeometry::UnsignedByteType | 0x1401 | |
QSGGeometry::ShortType | 0x1402 | |
QSGGeometry::UnsignedShortType | 0x1403 | |
QSGGeometry::IntType | 0x1404 | |
QSGGeometry::UnsignedIntType | 0x1405 | |
QSGGeometry::FloatType | 0x1406 | |
QSGGeometry::Bytes2Type | 0x1407 | Qt 5.14 で追加されました。 |
QSGGeometry::Bytes3Type | 0x1408 | Qt 5.14 で追加されました。 |
QSGGeometry::Bytes4Type | 0x1409 | Qt 5.14 で追加されました。 |
QSGGeometry::DoubleType | 0x140A | Qt 5.14 で追加されました。 |
メンバー関数 ドキュメント
QSGGeometry::QSGGeometry(const QSGGeometry::AttributeSet &attributes, int vertexCount, int indexCount = 0, int indexType = UnsignedShortType)
attributes に基づいてジオメトリオブジェクトを構築します。
このオブジェクトはattributes とindexCount の累積サイズに基づいてvertexCount 頂点用のスペースを確保します。
indexType UnsignedShortType UnsignedIntType
後者のサポートは、実行時に使用されるグラフィックス API の実装に依存し、常に利用できるとは限りません。
ジオメトリ・オブジェクトは、デフォルトではDrawTriangleStrip を描画モードとして構築されます。
注意: attributes およびそれによって参照されるAttribute オブジェクトは、QSGGeometry のライフタイム全体にわたって有効でなければなりません。QSGGeometry はattributes への参照を保持し、Attribute オブジェクトは削除しません。
[virtual noexcept]
QSGGeometry::~QSGGeometry()
ジオメトリ オブジェクトと、それが割り当てている頂点およびインデックス データを破棄します。
void QSGGeometry::allocate(int vertexCount, int indexCount = 0)
このジオメトリ オブジェクトの頂点データとインデックス データを、vertexCount の頂点とindexCount のインデックスに合うようにリサイズします。
頂点とインデックスのデータはこの呼び出しの後で無効になり、レンダラーが内部バッファを更新する機会があるように、呼び出し元は node->markDirty(QSGNode::DirtyGeometry) を呼び出して、関連するジオメトリ ノードをダーティとしてマークする必要があります。
int QSGGeometry::attributeCount() const
このジオメトリが使用するアトリビュートセットの数を返します。
const QSGGeometry::Attribute *QSGGeometry::attributes() const
このジオメトリのアトリビュートを配列で返します。配列のサイズはattributeCount() で指定します。
[static]
const QSGGeometry::AttributeSet &QSGGeometry::defaultAttributes_ColoredPoint2D()
頂点ごとのカラー 2D 描画に使用するアトリビュートを返す便利な関数です。
[static]
const QSGGeometry::AttributeSet &QSGGeometry::defaultAttributes_Point2D()
2D ベタ塗り描画に使用する属性を返す便利な関数です。
[static]
const QSGGeometry::AttributeSet &QSGGeometry::defaultAttributes_TexturedPoint2D()
テクスチャ付き 2D 描画に使用する属性を返す便利な関数です。
unsigned int QSGGeometry::drawingMode() const
このジオメトリの描画モードを返します。
デフォルト値はDrawTriangleStrip です。
setDrawingMode()も参照してください 。
int QSGGeometry::indexCount() const
このジオメトリオブジェクト内のインデックスの数を返します。
void *QSGGeometry::indexData()
このジオメトリ オブジェクトの生のインデックス データへのポインタを返します。
indexDataAsUShort() およびindexDataAsUInt() も参照 。
const void *QSGGeometry::indexData() const
このジオメトリ オブジェクトの生のインデックス データへのポインタを返します。
indexDataAsUShort() およびindexDataAsUInt()も参照 。
uint *QSGGeometry::indexDataAsUInt()
インデックスデータを 32 ビット符号なし整数からなる変更可能な配列としてアクセスするための便利な関数です。
const uint *QSGGeometry::indexDataAsUInt() const
インデックスデータを 32 ビット符号なし整数の不変配列としてアクセスするための便利な関数です。
quint16 *QSGGeometry::indexDataAsUShort()
インデックスデータを16ビット符号なし整数の不変配列としてアクセスするための便利関数。
const quint16 *QSGGeometry::indexDataAsUShort() const
インデックスデータを16ビット符号なし整数の不変配列としてアクセスするための便利関数。
QSGGeometry::DataPattern QSGGeometry::indexDataPattern() const
このジオメトリにおけるインデックスの使用パターンを返します。デフォルトのパターンはAlwaysUploadPattern です。
setIndexDataPattern()も参照してください 。
int QSGGeometry::indexType() const
このジオメトリオブジェクトのインデックスに使用されているプリミティブ型を返します。
float QSGGeometry::lineWidth() const
このジオメトリで現在使用されている線幅または点幅を取得します。このプロパティは、drawingMode がDrawLines またはDrawLineStrip のときの線幅にのみ適用されます。 サポートされている場合は、drawingMode がDrawPoints のときの点サイズにも適用されます。
デフォルト値は1.0
注: 点描画と線描画のサポートは、プラットフォームとグラフィックス API によっ て、実行時に制限される場合があります。例えば、ポイント・スプライトをサポートしていないAPIもあるため、1以外のサイズを設定することはできません。
注: 1.0
の幅は常にサポートされている。
setLineWidth() およびdrawingMode()も参照してください 。
void QSGGeometry::markIndexDataDirty()
このジオメトリの頂点が変更されたことを示し、再度アップロードする必要があります。
この関数は、頂点の使用パターンが StaticData で、このジオメトリをレンダリングするレンダラーがジオメトリを頂点バッファオブジェクト(VBO)にアップロードする場合にのみ効果を発揮します。
void QSGGeometry::markVertexDataDirty()
このジオメトリの頂点が変更され、再度アップロードする必要があることを示します。
この関数は、頂点の使用パターンが StaticData で、このジオメトリをレンダリングするレンダラーがジオメトリを Vertex Buffer Objects(VBOs)にアップロードする場合にのみ効果があります。
void QSGGeometry::setDrawingMode(unsigned int mode)
このジオメトリの描画に使用するmode を設定します。
デフォルト値はQSGGeometry::DrawTriangleStrip です。
drawingMode() およびDrawingModeも参照してください 。
void QSGGeometry::setIndexDataPattern(QSGGeometry::DataPattern p)
インデックスの使用パターンをp に設定します。
デフ ォル ト はAlwaysUploadPattern です。デフォルト以外に設定した場合、ユーザはインデックス・データを変更した後に、QSGNode::DirtyGeometry を使用してQSGNode::markDirty() を呼び出すだけでなく、markIndexDataDirty() を呼び出す必要があります。
indexDataPattern()も参照 。
void QSGGeometry::setLineWidth(float width)
このジオメトリに使用する線幅または点幅をwidth に設定します。 このプロパティは、drawingMode がDrawLines またはDrawLineStrip のときに線幅にのみ適用されます。サポートされている場合は、drawingMode がDrawPoints のときに点サイズにも適用されます。
注: 点描画と線描画のサポートは、プラットフォームとグラフィックス API によっ て、実行時に制限される場合があります。例えば、ポイント・スプライトをサポートしていない API もあるため、1 以外のサイズを設定することはできません。
注: 1.0
の幅は常にサポートされている。
lineWidth() およびdrawingMode()も参照して ください。
void QSGGeometry::setVertexDataPattern(QSGGeometry::DataPattern p)
頂点の使用パターンをp に設定します。
デフォルトはAlwaysUploadPattern 。デフォルト以外に設定した場合は、頂点データを変更した後に、QSGNode::DirtyGeometry でQSGNode::markDirty() を呼び出すだけでなく、markVertexDataDirty() を呼び出す必要があります。
vertexDataPattern()も参照してください 。
int QSGGeometry::sizeOfIndex() const
インデックス・タイプのバイト・サイズを返します。
この値は、インデックス・タイプがUnsignedShortType の場合は2
となり、インデックス・タイプがUnsignedIntType の場合は4
となります。
int QSGGeometry::sizeOfVertex() const
頂点のバイトサイズを返します。
この値はアトリビュートに由来します。
[static]
void QSGGeometry::updateColoredRectGeometry(QSGGeometry *g, const QRectF &rect)
ジオメトリg をrect の座標で更新します。
この関数は、ジオメトリ オブジェクトにQSGGeometry::ColoredPoint2D の頂点からなる単一の三角形の帯が含まれていると仮定します。
[static]
void QSGGeometry::updateRectGeometry(QSGGeometry *g, const QRectF &rect)
ジオメトリg をrect の座標で更新します。
この関数は、ジオメトリ オブジェクトがQSGGeometry::Point2D の頂点を持つ単一の三角形ストリップを含んでいると仮定します。
[static]
void QSGGeometry::updateTexturedRectGeometry(QSGGeometry *g, const QRectF &rect, const QRectF &textureRect)
ジオメトリg をrect の座標とtextureRect のテクスチャ座標で更新します。
textureRect は正規化座標でなければなりません。
g は、 型の 4 つの頂点からなる三角形の帯であると仮定します。QSGGeometry::TexturedPoint2D
int QSGGeometry::vertexCount() const
このジオメトリ オブジェクトの頂点の数を返します。
void *QSGGeometry::vertexData()
このジオメトリ オブジェクトの生の頂点データへのポインタを返します。
vertexDataAsPoint2D() およびvertexDataAsTexturedPoint2D()も参照 。
const void *QSGGeometry::vertexData() const
このジオメトリ オブジェクトの生の頂点データへのポインタを返します。
vertexDataAsPoint2D() およびvertexDataAsTexturedPoint2D()も参照 。
QSGGeometry::ColoredPoint2D *QSGGeometry::vertexDataAsColoredPoint2D()
QSGGeometry::ColoredPoint2D の変更可能な配列として頂点データにアクセスするための便利な関数です。
const QSGGeometry::ColoredPoint2D *QSGGeometry::vertexDataAsColoredPoint2D() const
頂点データをQSGGeometry::ColoredPoint2D の不変配列としてアクセスするための便利な関数。
QSGGeometry::Point2D *QSGGeometry::vertexDataAsPoint2D()
頂点データをQSGGeometry::Point2D のミュータブル配列としてアクセスするための便利関数.
const QSGGeometry::Point2D *QSGGeometry::vertexDataAsPoint2D() const
頂点データをQSGGeometry::Point2D の不変配列としてアクセスするための便利関数.
QSGGeometry::TexturedPoint2D *QSGGeometry::vertexDataAsTexturedPoint2D()
QSGGeometry::TexturedPoint2D のミュータブル配列として頂点データにアクセスするための便利関数.
const QSGGeometry::TexturedPoint2D *QSGGeometry::vertexDataAsTexturedPoint2D() const
頂点データをQSGGeometry::TexturedPoint2D の不変配列としてアクセスするための便利関数.
QSGGeometry::DataPattern QSGGeometry::vertexDataPattern() const
このジオメトリ内の頂点の使用パターンを返します。デフォルトのパターンはAlwaysUploadPattern です。
setVertexDataPattern()も参照してください 。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。