このページでは

Qt 3D ジオメトリのレンダリング

Qt 3D Renderは、ジオメトリデータを保存し、レンダラーがそれをどのように読み取るべきかを指定するための汎用的な方法を提供します。

バッファ

Qt3DCore::QBuffer クラスは、生データを格納します。これは、純粋にメモリの配列として機能します。ほとんどの場合、Qt3DCore::QBuffer は、1 つ以上の Qt3DRender::QAttributes によって参照されることで間接的に使用されます。 ただし、Uniform Buffer Object (UBO) や Shader Storage Buffer Object (SSBO) を扱う場合、QBuffer が QParameter の value プロパティとして直接使用されることもあります。

Buffer {
    id: vertexBuffer
    type: Buffer.VertexBuffer
    data: buildVertexBufferData()
}

属性

Qt3DCore::QAttributeは、参照されるバッファに含まれるデータをどのように抽出し、頂点シェーダの入力に渡すべきかを指定します。これはQt3DCore::QBufferを参照し、頂点サイズ、データ型、2つの頂点間のストライド、および開始オフセットを定義することで、属性のレイアウトを指定できます。 属性の型によって、それが頂点バッファとして使用されるか、インデックスバッファとして使用されるかも決まります。これにより、バッファ内のデータ構造を完全に柔軟に設計できます。各頂点属性ごとに個別のバッファを使用したり、すべての属性のデータを含むインターリーブされたバッファを使用したり、あるいは個別のバッファとインターリーブされたバッファを組み合わせて使用したりすることが可能です。

Attribute {
    attributeType: Attribute.VertexAttribute
    vertexBaseType: Attribute.Float
    vertexSize: 3
    byteOffset: 0
    byteStride: 9 * 4
    count: 4
    name: defaultPositionAttributeName()
    buffer: vertexBuffer
}

ジオメトリ

Qt3DCore::QGeometry は、さまざまな属性を集約して 1 つのジオメトリを形成します。通常、適切なジオメトリには、頂点位置用の属性、頂点法線用の属性、およびテクスチャ座標用の属性が含まれます。ジオメトリを法線マッピングされたマテリアルでも使用したい場合は、一貫性のある頂点接線ベクトルのセットも提供する必要があります。

Geometry {
    Attribute {
        attributeType: Attribute.VertexAttribute
        vertexBaseType: Attribute.Float
        vertexSize: 3
        byteOffset: 0
        byteStride: 9 * 4
        count: 4
        name: defaultPositionAttributeName()
        buffer: vertexBuffer
    }

    Attribute {
        attributeType: Attribute.VertexAttribute
        vertexBaseType: Attribute.Float
        vertexSize: 3
        byteOffset: 3 * 4
        byteStride: 9 * 4
        count: 4
        name: defaultNormalAttributeName()
        buffer: vertexBuffer
}

GeometryView

Qt3DCore::QGeometryViewは、Qt3DCore::QGeometryを受け取ります。このクラスは、描画されるインスタンス数、開始インスタンス、使用するQt3DCore::QGeometryView::PrimitiveType のタイプなど、描画呼び出しを制御するためのプロパティを提供します。

メッシュの詳細を完全に定義するため、メッシュをレンダリングすることなく、バウンディングボリュームの計算やピッキングなどの操作を行うことができます。

GeometryView {
    instanceCount: 1
    indexOffset: 0
    firstInstance: 0
    primitiveType: GeometryRenderer.Triangles
    geometry: Geometry { ... }
}

GeometryRenderer

Qt3DRender::QGeometryRenderer は QComponent であり、QEntity によってアグリゲートされると、それが参照する Qt3DCore::QGeometryView を描画できるようになります。Qt3DRender::QGeometryRenderer は、基盤となるグラフィックス API への描画呼び出しに変換されます。

GeometryRenderer {
    view: GeometryView { ... }
}

注: Qt6以前 、Qt3DRender::QGeometryRendererには、現在はビューインスタンスによって提供されることを意図している詳細情報が含まれていました。これらのプロパティはQt 6でもまだ存在しますが、非推奨となり、Qt 7で削除される予定です。

© 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.