logo资料库

基于Visual C# 的DirectX开发实例.pdf

第1页 / 共199页
第2页 / 共199页
第3页 / 共199页
第4页 / 共199页
第5页 / 共199页
第6页 / 共199页
第7页 / 共199页
第8页 / 共199页
资料共199页,剩余部分请下载后查看
基于 Visual C#的 DirectX 开发实例 水利与环境学院 肖泽云 QQ:289700062 第 1 页 共 199 页 Email:xwebsite@163.com
基于 Visual C#的 DirectX 开发实例 水利与环境学院 肖泽云 基于 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 QQ:289700062 第 2 页 共 199 页 Email:xwebsite@163.com
基于 Visual C#的 DirectX 开发实例 水利与环境学院 肖泽云 目 录 一、配置环境...................................................................................................................................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 QQ:289700062 Email:xwebsite@163.com 第 3 页
基于 Visual C#的 DirectX 开发实例 水利与环境学院 肖泽云 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 QQ:289700062 Email:xwebsite@163.com 第 4 页
基于 Visual C#的 DirectX 开发实例 水利与环境学院 肖泽云 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 QQ:289700062 Email:xwebsite@163.com 第 5 页
基于 Visual C#的 DirectX 开发实例 水利与环境学院 肖泽云 一、配置环境 首先,需要安装 Visual C#,VS 2003、VS 2005或 Express 版都可以。然后再安装 DirectX SDK,本文中所配置的环境为 VS 2005 和 DirectX 9.0(April 2006)。 目前 DirectX 的最新版本是 DirectX 11,下载的网址: http://www.microsoft.com/downloads/en/resultsForCategory.aspx?displaylang=en&categor yId=2&stype=n_dc QQ:289700062 Email:xwebsite@163.com 第 1 页
基于 Visual C#的 DirectX 开发实例 水利与环境学院 肖泽云 二、DirectX 9.0 简介 Microsoft DirectX 是一套用于创建游戏和多媒体程序的底层应用程序接口(API), 它支持高性能的二维和三维图形显示、声音以及输入等。 DirectX 开发的首推工具是 C++,但是由于程序语言的不断发展以及程序员自身的编程 习惯,有很多程序员仍然习惯使用 C#、VB。尽管到了.Net 时代,这些语言开发的程序本身 没有太大区别,但是各种语言仍有很多爱好者。为了使得各种语言都能开发 DirectX,所有 DirectX 9.0 中实行托管代码。开发者能够用托管代码来充分利用 DirectX 的多媒体功能和 硬件加速功能。DirectX 9.0的托管代码也能充分实现非托管的原始功能。下面就是 DirectX 9.0 所支持的托管代码语言: Microsoft Visual C# Microsoft Visual Basic.NET Microsoft Visual C++ Microsoft JScript .NET 托管的 DirectX 主要有以下部分组成: Direct3D Graphics DirectDraw DirectInput DirectPlay DirectSound Audio Video Playback QQ:289700062 Email:xwebsite@163.com 第 2 页
基于 Visual C#的 DirectX 开发实例 水利与环境学院 肖泽云 三、第一个 DirectX 程序 1、新建项目 新建一个 Visual C#空项目,设置其项目名称为“第一个 DirectX 程序”,如下图所示: 2、新建项 在解决方案资源管理器中选择项目名称并点击右键,选择“添加——新建项”来添加 一个新的文件,如下图所示: QQ:289700062 Email:xwebsite@163.com 第 3 页
分享到:
收藏