《Study Direct 3D》第一节
来源:互联网 发布:matlab相机标定 源码 编辑:程序博客网 时间:2024/04/30 05:19
Directx的基本过程为:
一、定义Device------InitializeGraphics
IInitializeGraphics又分为:
1.定义显示方式:全屏/非全屏()
PresentParameters presentParams = new PresentParameters();
presentParams.Windowed = true; //不是全屏显示,在一个窗口显示
2.绘制图形后内存释放
presentParams.SwapEffect = SwapEffect.Discard; //后备缓存交换的方式
3.自动深度模板测试
presentParams.EnableAutoDepthStencil = true; //允许使用自动深度模板测试
4.设置深度缓冲单元
presentParams.AutoDepthStencilFormat = DepthFormat.D16;
5.建立Device对象并实例化
device = new Device(0, DeviceType.Hardware, this.CreateFlags.SoftwareVertexProcessing, presentParams);
//设置设备重置事件(device.DeviceReset)事件函数为this.OnResetDevice
device.DeviceReset += new System.EventHandler(this.OnResetDevice);
this.OnCreateDevice(device, null);//自定义方法,初始化Device的工作放到这个方法中
this.OnResetDevice(device, null);//调用设备重置事件(device.DeviceReset)事件函数
//设备重置事件函数要设置Device参数,初始函数中必须调用该函数
二、初始化Device
1.onCreateDevice()//初始化方法
verts = new CustomVertex.TransformedColored[6];
verts[0].Position = new Vector4(10.0f, 10.0f, 0.5f, 1.0f);//第0点
verts[0].Color = Color.Aqua.ToArgb();
verts[1].Position = new Vector4(210.0f, 10.0f, 0.5f, 1.0f); //第1点
verts[1].Color = Color.Brown.ToArgb();
verts[2].Position = new Vector4(110.0f, 60.0f, 0.5f, 1.0f); //第2点
verts[2].Color = Color.LightPink.ToArgb();
verts[3].Position = new Vector4(210.0f, 210.0f, 0.5f, 1.0f); //第3点
verts[3].Color = Color.Aqua.ToArgb();
verts[4].Position = new Vector4(110.0f, 160.0f, 0.5f, 1.0f); //第4点
verts[4].Color = Color.Brown.ToArgb();
verts[5].Position = new Vector4(10.0f, 210.0f, 0.5f, 1.0f); //第5点
verts[5].Color = Color.LightPink.ToArgb();
2.onRestDevice()//重置事件
三、渲染图形
1.Render()//渲染方法,本方法没有任何渲染代码,可认为是渲染方法的框架
if (device == null) //如果未建立设备对象,退出
return;
if (pause)
return; //注意下句设置背景底色为白色
device.Clear(ClearFlags.Target | ClearFlags.ZBuffer,System.Drawing.Color.White, 1.0f, 0);
device.RenderState.CullMode = Cull.None; //背面剔除
device.BeginScene(); //开始渲染
device.VertexFormat = CustomVertex.TransformedColored.Format;
Modify(0.0f, 0.0f);//更改点坐标函数
device.DrawUserPrimitives(PrimitiveType.TriangleFan,5, verts1); //绘制5个三角形
Modify(250.0f, 0.0f);//更改点坐标函数
device.DrawUserPrimitives(PrimitiveType.TriangleStrip, 4, verts1); //绘制4个三角形
Modify(500.0f, 0.0f);//更改点坐标函数
device.DrawUserPrimitives(PrimitiveType.TriangleList, 2, verts1); //绘制2个三角形
Modify(0.0f, 250.0f);//更改点坐标函数
device.DrawUserPrimitives(PrimitiveType.LineList, 3, verts1); //绘制3条线段
Modify(250.0f, 250.0f);//更改点坐标函数
device.DrawUserPrimitives(PrimitiveType.LineStrip, 5, verts1); //绘制5条线段
Modify(500.0f, 250.0f);//更改点坐标函数
device.DrawUserPrimitives(PrimitiveType.PointList, 6, verts1); //绘制6个点
verts1 = null;
device.EndScene(); //渲染结束
device.Present(); //更新显示区域,把后备缓存的3D图形送到图形卡的显存中显示
2.更改点坐标函数
void Modify(float x1, float y1)
{
verts1 = (CustomVertex.TransformedColored[])verts.Clone();//获取verts中的副本
for (int i = 0; i < 6; i++)
{
verts1[i].X += x1;
verts1[i].Y += y1;
}
}
- 《Study Direct 3D》第一节
- 《Study Direct 3D》第二节
- 3D model study
- 第一章 Introducing Direct 3D
- Direct 3D骨骼动画
- Direct 3D学习笔记三:矩阵
- 学习Direct 3D之Cube Example
- windows direct 3d 编程总结
- Direct 3D学习笔记二:顶点的创建
- Directx9 Graphics: The Definitive Guide To Direct 3d
- 第二章Direct 3D程序的Windows程序代码
- 第三章 设定Direct 3D应用程序中的DirectDraw
- direct 3d 渲染红蓝立体效果
- 在direct 3d中实现shadow map的步骤
- 创建自己的第一个direct 3D程序
- 在direct 3d中实现shadow map的步骤
- Direct 3D绘制流水线(渲染管线)
- 在direct 3d中实现shadow map的步骤
- 控制listview大图标之间的间距
- [转] 介绍vi命令
- 封网后聊天就用“飞秋”
- ORACLE SESSION连接数和inactive的问题记录
- 飞秋未来的发展趋势
- 《Study Direct 3D》第一节
- epoll与iocp的异同
- 以和为贵
- 获取libpcap版本号
- 触发器在银行取款机系统中的应用实例
- C语言HTTP请求GET
- 古代延年益寿10秘诀
- VS2010 快捷键
- zendstudio8正式版出来了