次の方法で共有


三角形リスト

三角形リストは、分離された三角形の一覧です。 彼らはお互いに近いかもしれないし、そうでないかもしれない。 三角形リストには少なくとも 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}
};

プリミティブ