共用方式為


三角形帶狀

三角形帶狀是一系列連接的三角形。 由於三角形已連接,因此應用程式不需要重複指定每個三角形的所有三個頂點。 例如,您只需要七個頂點,才能定義下列三角形帶狀。

具有七個頂點的三角形帶圖 圖

系統會使用頂點 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}
};

基本類型