三角形清單
三角形清單是隔離三角形的清單。 它們可能或可能不會彼此接近。 三角形清單必須至少有 3 個頂點,而且頂點總數必須可被 3 整除。
使用三角形清單,建立由不相交項目所組成的物件。 例如,建立 3D 遊戲中力場牆的一個方式是指定小、未連接三角形的大型清單。 然後套用看起來會發出光到三角形清單的材質和紋理。 牆中每個三角形看起來會發光。 牆背後的場景透過三角形之間的縫隙變成部分可見,如玩家看向力場時可能的預期。
三角形清單也適用於建立有清晰邊緣並以 Gouraud Shading 呈現陰影的基本類型。 請參閱 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 );
您也可以使用三角形等量來呈現未彼此連接的三角形。 若要這樣做,請指定 (的變質三角形,也就是清單中大小為零的三角形) ;這會在轉譯期間不會出現的兩個三角形之間建立線條。 例如,若只要轉譯上一個範例中的第一個和最後三角形,請使用下列頂點初始化頂點緩衝區:
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}
};
相關主題