三角形帶狀
三角形帶狀是一系列連接的三角形。 由於三角形已連接,因此應用程式不需要重複指定每個三角形的所有三個頂點。 例如,您只需要七個頂點,才能定義下列三角形帶狀。
具有七個頂點的三角形帶圖
系統會使用頂點 v1、v2 和 v3 繪製第一個三角形:v2、v4 和 v3 繪製第二個三角形;v3、v4 和 v5 繪製第三個;v4、v6 和 v5 繪製第四個;等等。 請注意,第二個和第四個三角形的頂點順序不一;這是為了確保所有三角形都是以順時針方向繪製的。
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);
使用三角形帶來呈現未彼此連接的三角形。 若要這樣做,請在三角形清單中指定變質的三角形(也就是區域為零的三角形)。 這會在兩個不會呈現的三角形之間建立線條。 若要只轉譯上一個範例中的第一個和最後一個三角形,請修改頂點緩衝區,如下所示:
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}
};
相關主題