Share via


三角形のストリップ

トライアングル ストリップとは、接続された一連の三角形を指します。 三角形どうしは接続されているため、アプリケーションは三角形ごとに 3 つすべての頂点を繰り返し指定する必要がありません。 たとえば、次のトライアングル ストリップの定義に必要な頂点は 7 個だけです。

7 個の頂点を持つトライアングル ストリップの図

システムは、頂点 v1、v2、v3 を使って最初の三角形を描画し、v2、v4、v3 を使って 2 つ目の三角形を描画します。さらに、v3、v4、v5 を使って 3 つ目を、v4、v6、v5 を使って 4 つ目を描画し、以降も同様に続きます。 2 つ目と 4 つ目の三角形の頂点の順序は番号順でないことに注意してください。これは、すべての三角形を時計回りの方向に描画する必要があるためです。

3D シーンのほとんどのオブジェクトは、トライアングル ストリップで構成されます。 これは、トライアングル ストリップを使うと、メモリと処理時間を効率的に利用する形で複雑なオブジェクトを指定できるためです。

次の図は、レンダリングされたトライアングル ストリップを示しています。

レンダリングされたトライアングル ストリップの図

次のコードは、このトライアングル ストリップの頂点を作成する方法を示しています。

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_TRIANGLESTRIP, 0, 4);

三角形ストリップを使用して、互いに接続されていない三角形をレンダリングします。 これを行うには、三角形リストに縮退する三角形 (つまり、領域が 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