通过Direct3D绘制的每个对象都是有三角形组成的,一个三角形由三个点组成,而每个点都定义成一个向量来指定点的X、Y和Z坐标。DirectX中有一种定义顶点的结构,那就是CustomVertex类,只需要在渲染函数中添加类似如下代码即可绘制一个三角形:
CustomVertex.TransformedColored[] vertices = new CustomVertex.TransformedColored[3];//定义顶点
vertices[0].Position = new Vector4(150f, 400f, 0f, 1f);
vertices[0].Color = Color.Red.ToArgb();
vertices[1].Position = new Vector4(this.Width / 2 , 100f, 0f, 1f);
vertices[1].Color = Color.Green.ToArgb();
vertices[2].Position = new Vector4(this.Width-150f, 400f, 0f, 1f);
vertices[2].Color = Color.Yellow.ToArgb();
其中第一行代码为创建一个数组,用于表示三个顶点的信息。TransformedColored表示顶点坐标为平面坐标且各点都具有颜色,剩下的代码为顶点设置坐标和颜色。下面的代码将告诉device顶点信息的形式并绘制三角形,如下代码:
device.VertexFormat = CustomVertex.TransformedColored.Format;
device.DrawUserPrimitives(PrimitiveType.TriangleList, 1, vertices);
第二句代码实际上是绘制三角形的代码,函数DrawUserPrimitives()的第一个参数表示顶点数据为列表形式,如果要绘制四个三角形则前面定义的顶点数组vertices有12个顶点。第二个参数为要绘制的三角形的数目。这段代码要置于device.BeginScene()和device.EndScene()之间。运行程序,其结果如下图所示: