1) 应用程序框架
启动时加载DirectX
Device设备初始化,只执行一次
Deivce 初始化工作,只调用一次:
窗口发生变化 -> Device 参数变化
渲染,显示过程
2) 直接屏幕绘制
TransFormedColored 结构
记录顶点
根据透视原理计算过的
可以直接在显示器上显示
属性 Position, Vector4(x,y,z,1). 同一图形的z应该相同,表示观察者的距离
属性 Color,
CustomVertex.TransformedColored vert = CustomVertex.TransformedColored();
float z = 0.5F;
vert.Position = new Vector4(150F, 50F, z, 1F);
vert.Color = Color.Aqua.ToArgb();
绘制顶点,必须使用 DrawUserPrimitives()
verts = new CustomVertex.TransformedColored[n];
...
device.DrawUserPrimitives(PrimitiveType, 1, verts);
结构 PrimitiveType
-> PointList 绘制顶点
-> LineList 绘制线段,每个线段使用2个顶点
-> LineStrip 绘制线段,中间顶点重复使用
-> TriangleList 绘制三角形,每个三角形使用3个顶点
-> TriangleStrip 绘制三角形,每2个相邻三角形共享中间两个顶点
-> TriangleFan 绘制三角形,每2个相邻三角形共享中间两个顶点,所有三角形共享一个顶点
3) 使用VertexBuffer
构造函数
#region VertexBuffer
vertexBuffer = new VertexBuffer(typeof(CustomVertex.TransformedColored),
3,//顶点个数
dev,//Device
0,
CustomVertex.TransformedColored.Format,//顶点格式
Pool.Default);//(顶点)参数存放位置
事件 Created
图形卡中的数据在窗口最小,最大化以后,可能丢失,因此需要数据重建。使用Created事件。
vertexBuffer.Created += new EventHandler(OnCreateVertexBuffer);
顶点绘制 DrawPrimitives()
device.DrawPrimitives(PrimitiveType.TriangleList, 0, 1);//绘制.
-> 格式
-> 起始
-> 个数