三角形条带
三角形条是一系列连接的三角形。 由于三角形已连接,因此应用程序不需要重复为每个三角形指定所有三个顶点。 例如,只需七个顶点即可定义以下三角形条带。
带有七个顶点的三角形带的
系统使用顶点 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}
};
相关主题