トライアングル リスト
トライアングル リストは、独立した三角形のリストです。それらは近い位置にある場合とそうでない場合があります。トライアングル リストには 3 つ以上の頂点がなければならず、頂点の総数が 3 で割り切れる数でなければなりません。
接合されていない部分で構成されるオブジェクトを作成するには、トライアングル リストを使用します。たとえば、3D ゲームで力場の壁を作成する 1 つの方法として、小さな接続されていない三角形の大きなリストを指定する方法があります。その後、光を放射するようなマテリアルとテクスチャーをトライアングル リストに適用します。壁の中の各三角形が、輝いているように見えます。壁の背後のシーンは、プレイヤーが力場を見るときに予想されるように、三角形間のすき間から部分的に見えるようになります。
トライアングル リストは、鋭角のあるプリミティブやグーロー シェーディングで陰影が付けられたプリミティブの作成に役立ちます。「面および頂点法線ベクトル (Direct3D 9)」を参照してください。
次の図は、レンダリングされたトライアングル リストを表しています。
次のコードは、このトライアングル リストに頂点を作成する方法を示しています。
struct CUSTOMVERTEX { float x,y,z; }; CUSTOMVERTEX Vertices[] = { {-5.0, -5.0, 0.0}, { 0.0, 5.0, 0.0}, { 5.0, -5.0, 0.0}, {10.0, 5.0, 0.0}, {15.0, -5.0, 0.0}, {20.0, 5.0, 0.0} };
次のコード例は、Direct3D 9 で IDirect3DDevice9::DrawPrimitive を使用してこのトライアングル リストをレンダリングする方法を示しています。
// // It is assumed that d3dDevice is a valid // pointer to a IDirect3DDevice9 interface. // d3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 2 );
相互に接続されていない三角形のレンダリングには、トライアングル ストリップを使用することもできます。これを行うには、リスト内の縮退トライアングル (つまり、サイズが 0 の三角形) を指定します。これにより、レンダリング中に表示されない 2 つの三角形間の線が作成されます。たとえば、前の例の最初と最後の三角形のみをレンダリングするには、次の頂点で頂点バッファーを初期化します。
CUSTOMVERTEX Vertices[] = { {-5.0, -5.0, 0.0}, { 0.0, 5.0, 0.0}, { 5.0, -5.0, 0.0}, { 5.0, -5.0, 0.0}, // degenerate triangle {10.0, 5.0, 0.0}, // degenerate triangle {10.0, 5.0, 0.0}, {15.0, -5.0, 0.0}, {20.0, 5.0, 0.0} };