基于 Visual C#的 DirectX 开发实例 水利与环境学院 肖泽云
QQ:289700062 第 2 页 共 199 页 Email:xwebsite@163.com
基于 Visual C# 的 DirectX 开发实例
三峡大学水利与环境学院 肖泽云
前 言
DirectX 是开发三维场景的利器,也是目前大多三维游戏采用的开发平
台。国内外关于 DirectX 开发的书籍不是非常多,而且大多数书籍都是针对
Visual C++语言来介绍的。在安装 DirectX SDK 时可以选择安装例子和教程,
微软为开发者提供了许多较为实用的例子供大家学习。本文结合计算机三维图
形学和 DirectX 的开发帮助,并参考国内外关于 DirectX 开发的书籍和网站资
料等,主要介绍如何采用 Visual C# 语言对 DirectX 进行三维图形开发。本文
共分十六章,以“由易到难、由简单到复杂”为主线,以介绍 DirectX 开发方
法为主,并穿插介绍相关的计算机三维图形知识等。限于作者水平有限,文中
难免存在错误和缺点,敬请读者朋友不吝指正。
肖泽云
2010 年 3 月
注意:文中对应的例子文件存放在 Project 文件夹中,Media 文件夹中的文件
为各例子可能要用到资源文件(如图片、模型等)。如果读者不想安装 DirectX
SDK,而又需要运行程序,请安装 DirectX Runtime 或直接将 Project 文件夹下
的 CommonDLL 文件夹中的文件复制到运行程序的同目录下,如复制 CommonDLL
文件夹中的所有文件到“\Project\04 绘制一个三角形\绘制一个三角形
\bin\Debug”目录下,即可运行和开发程序。
作者联系地址:湖北省宜昌市三峡大学水利与环境学院
邮编:443002
Email: xwebsite@163.com
QQ : 289700062
基于 Visual C#的 DirectX 开发实例 水利与环境学院 肖泽云
QQ:289700062 Email:xwebsite@163.com 第 3 页
目 录
一、配置环境...................................................................................................................................1
二、DirectX 9.0 简介......................................................................................................................2
三、第一个 DirectX 程序................................................................................................................3
1、新建项目.............................................................................................................................3
2、新建项.................................................................................................................................3
3、添加窗体.............................................................................................................................4
4、添加引用.............................................................................................................................4
5、定义全局变量.....................................................................................................................5
6、设置窗体初始状态.............................................................................................................5
7、定义初始化函数.................................................................................................................5
8、定义渲染函数.....................................................................................................................6
9、定义程序入口.....................................................................................................................6
10、设置运行方式...................................................................................................................6
四、绘制一个三角形.......................................................................................................................8
五、摄像机基础...............................................................................................................................9
1、定义视图变换.....................................................................................................................9
2、定义投影变换.....................................................................................................................9
3、设置绘图设备投影及视图矩阵.......................................................................................10
4、绘制三角形.......................................................................................................................10
5、显示线框...........................................................................................................................13
六、输入事件.................................................................................................................................14
1、键盘输入...........................................................................................................................14
2、鼠标输入...........................................................................................................................15
七、二维显示.................................................................................................................................19
1、显示图片...........................................................................................................................19
2、二维图片动画...................................................................................................................22
3、显示二维文字...................................................................................................................23
八、矩阵应用.................................................................................................................................25
1、常用矩阵及算法...............................................................................................................25
2、视图矩阵...........................................................................................................................27
3、透视投影矩阵...................................................................................................................29
4、仿射投影矩阵...................................................................................................................36
5、常用矩阵变换...................................................................................................................38
九、四元数理论及其应用.............................................................................................................42
1、四元数定义.......................................................................................................................42
2、四元数运算.......................................................................................................................42
3、四元数的共轭、矩、迹、模、倒数...............................................................................42
基于 Visual C#的 DirectX 开发实例 水利与环境学院 肖泽云
QQ:289700062 Email:xwebsite@163.com 第 4 页
4、四元数的三角形式...........................................................................................................43
5、在三维计算机图形中的应用...........................................................................................44
十、摄像机变换.............................................................................................................................46
1、准备场景...........................................................................................................................46
2、旋转摄像机.......................................................................................................................53
3、通过键盘控制摄像机旋转...............................................................................................54
4、通过键盘控制摄像机缩放...............................................................................................57
5、通过鼠标控制摄像机旋转...............................................................................................59
6、通过鼠标滚轮控制摄像机缩放.......................................................................................60
7、通过鼠标控制摄像机移动...............................................................................................61
十一、地形.....................................................................................................................................64
1、索引编号...........................................................................................................................64
2、规则三角网.......................................................................................................................67
3、通过高度图生成三角网...................................................................................................69
4、地形贴图...........................................................................................................................70
5、设置深度缓冲...................................................................................................................72
十二、三维显示控件设计.............................................................................................................75
1、准备工作...........................................................................................................................75
2、上一视图与下一视图.......................................................................................................85
3、附视图、左视图及前视图的实现...................................................................................86
4、常用浏览功能...................................................................................................................89
5、工具栏控件.......................................................................................................................92
十三、绘制基本图元.....................................................................................................................99
1、绘制离散点.....................................................................................................................100
2、绘制分段直线.................................................................................................................102
3、绘制折线.........................................................................................................................103
4、绘制独立三角形.............................................................................................................104
5、绘制扇形三角形.............................................................................................................106
6、绘制三角形带.................................................................................................................107
7、四种绘制图元方法比较.................................................................................................109
8、绘制六面体.....................................................................................................................120
9、绘制球体.........................................................................................................................123
10、绘制圆...........................................................................................................................128
11、绘制圆锥.......................................................................................................................134
12、绘制圆柱.......................................................................................................................139
十四、Mesh 网格.........................................................................................................................146
1、创建基本几何体网格.....................................................................................................146
2、使用构造函数创建网络.................................................................................................150
3、从文件导入网格.............................................................................................................156
4、导入 X 文件的网格贴图.................................................................................................156
基于 Visual C#的 DirectX 开发实例 水利与环境学院 肖泽云
QQ:289700062 Email:xwebsite@163.com 第 5 页
5、将网格导出为 X 文件.....................................................................................................158
6、三维字体.........................................................................................................................159
7、子集、属性、邻接、复制.............................................................................................160
8、渐进网格.........................................................................................................................163
9、世界矩阵.........................................................................................................................165
十五、碰撞检测...........................................................................................................................168
1、包围体.............................................................................................................................168
2、点击射线.........................................................................................................................174
3、拾取对象.........................................................................................................................176
十六、材质、贴图与灯光...........................................................................................................182
1、材质.................................................................................................................................182
2、贴图.................................................................................................................................184
3、灯光.................................................................................................................................190