基于Visual C#的DirectX开发实例——绘制一个三角形

四、绘制一个三角形

通过Direct3D绘制的每个对象都是有三角形组成的,一个三角形由三个点组成,而每个点都定义成一个向量来指定点的XYZ坐标。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()的第一个参数表示顶点数据为列表形式,如果要绘制四个三角形则前面定义的顶点数组vertices12个顶点。第二个参数为要绘制的三角形的数目。这段代码要置于device.BeginScene()device.EndScene()之间。运行程序,其结果如下图所示:

基于Visual C#的DirectX开发实例——绘制一个三角形