C# WinForm构架下的DirectX框架

来源:互联网 发布:淘宝扣分清零时间 编辑:程序博客网 时间:2024/05/28 11:51

 

 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);//绘制. 

-> 格式

-> 起始

-> 个数

 

 

 

 

0 0