次の方法で共有


プリミティブ トポロジ (Direct3D 10)

Direct3D 10 では、いくつかのプリミティブ タイプ (トポロジ) がサポートされており、D3D10_PRIMITIVE_TOPOLOGY 列挙型で表現します。これらのタイプは、パイプラインにより、頂点がどのように解釈され、レンダリングされるかを定義します。サポートされている基本的なプリミティブ タイプは次のとおりです。

各プリミティブ タイプを図形化した例については、このトピックの「ワインディング方向と先頭頂点の位置」にある図を参照してください。

入力アセンブラー ステージでは、頂点バッファーおよびインデックス バッファーからデータを読み取り、このデータをこれらのプリミティブにアセンブルし、残りのパイプライン ステージにデータを送信します(入力アセンブラー ステージで使用するプリミティブ タイプを指定するには、ID3D10Device::IASetPrimitiveTopology メソッドを使用します)。

プリミティブの隣接性

ポイント リストを除き、Direct3D 10 のすべてのプリミティブ タイプは、隣接性を持つプリミティブ タイプと、隣接性を持たないプリミティブ タイプの 2 種類に分けられます。隣接性を持つプリミティブには、それを取り囲む頂点がいくつか含まれますが、隣接性を持たないプリミティブに含まれるのは、ターゲット プリミティブの頂点のみです。たとえば、線リスト プリミティブ (D3D10_PRIMITIVE_TOPOLOGY_LINELIST の値で表現) には、対応する、隣接性を含む線リスト プリミティブ (D3D10_PRIMITIVE_TOPOLOGY_LINELIST_ADJ の値で表現) が存在します。

隣接プリミティブは、ジオメトリに関する追加情報の提供を目的としており、ジオメトリ シェーダーによってのみ認識されます。隣接性は、シルエット検出やシャドウ ボリュームの押し出しなどを使用するジオメトリ シェーダーで役に立ちます。

たとえば、隣接性のあるトライアングル リストを描画するとします。36 個の頂点を持つ (隣接性のある) トライアングル リストからは 6 個の完全なプリミティブが作成されます。ライン ストリップを除き、隣接性のあるプリミティブは、隣接性を持たない同じプリミティブのちょうど 2 倍の頂点を含んでいます。ここで、追加の頂点はそれぞれ隣接頂点です。

ワインディング方向と先頭頂点の位置

下の図にあるように、先頭頂点は、プリミティブ内の最初の非隣接頂点です。先頭頂点がそれぞれ異なるプリミティブで使用されている限り、1 つのプリミティブ タイプで複数の先頭頂点を定義することができます。隣接性を持つトライアングル ストリップでは、先頭頂点は 0、2、4、6 ... となります。隣接性を持つライン ストリップでは、先頭頂点は 1、2、3 ... となります。一方、隣接プリミティブには先頭頂点はありません。

次の図は、入力アセンブラーで生成可能なすべてのプリミティブ タイプの頂点の順序を表しています。

Ee415716.d3d10_primitive_topologies(ja-jp,VS.85).png

図中の記号については、次の表を参照してください。

記号 名前 説明
Ee415716.d3d10_primitive_topologies_vertex(ja-jp,VS.85).png 頂点 3D 空間内の点です。
Ee415716.d3d10_primitive_topologies_winding_direction(ja-jp,VS.85).png ワインディング方向 プリミティブをアセンブルするときの頂点の順序です。時計回り、または反時計回りです。これは、ID3D10Device::CreateRasterizerState を呼び出して指定します。
Ee415716.d3d10_primitive_topologies_leading_vertex(ja-jp,VS.85).png 先頭頂点 プリミティブ内で、定数ごとのデータを含む最初の非隣接頂点です。

関連項目

パイプライン ステージ (Direct3D 10)