三角形のストリップ
三角形ストリップは、接続された一連の三角形です。 三角形は接続されているため、アプリケーションは三角形ごとに 3 つの頂点すべてを繰り返し指定する必要はありません。 たとえば、次の三角形ストリップを定義するために必要な頂点は 7 つだけです。
システムは頂点 v1、v2、v3 を使用して最初の三角形を描画します。2 番目の三角形を描画する v2、v4、v3。3 番目を描画する v3、v4、v5。4 番目を描画する v4、v6、および v5。などなど。 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}
};
関連トピック