三角形帶狀
三角形連環是一系列的連接三角形。 因為是連接三角形,應用程式不需要重複指定每個三角形的所有三個頂點。 例如,您只需要七個頂點即可定義下列三角形連環。
系統會使用頂點 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}
};
相關主題