Share via


三角形リスト

トライアングル リストとは、独立した三角形のリストです。 彼らはお互いに近いかもしれないし、そうでないかもしれない。 三角形の一覧には、最低 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}

};

次のコード例は、 IDirect3DDevice9::D rawPrimitive を使用して Direct3D 9 でこの三角形リストをレンダリングする方法を示しています。

//
// 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}
};

Primitives