基于C#的DirectX开发实例
基于C#的DirectX开发实例,用实例逐步深入讲解DirectX的开发s字基于 Visua1C#的 Directx开发实例水利与环境学院肖泽云目录、配置环境自c非·垂·垂,;垂垂··、 Directx90简介2第一个 Directx程序1、新建项目2、新建项3、添加窗体4、添加引用.··垂·…······“········“·········:···5、定义全局变量6、设置窗体初始状态……7、定义初始化函数8、定义渲染函数4;··,·,,9、定义程序入口10、设置运行方式四、绘制一个三角形……4555666899五、摄像机基础.1、定义视图变换…2、定义投影变换···…·3、设置绘图设备投影及视图矩阵……...104、绘制三角形105、显示线框+垂c413六、输入事件.….………141、键盘输入142、鼠标输入15七、二维显示191、显示图片.2、二维图片动画…………………………………………33、显示二维文字·····“····八、矩阵应用···············“·····:················+·4·········+··“·+·····················4······“··········251、常用矩阵及算法…….252、视图矩阵273、透视投影矩阵94、仿射投影矩阵365、常用矩阵变换…….38九、四元数理论及其应用….1、四元数定义2、四元数运算423、四元数的共轭、矩、迹、模、倒数42QQ:289700062Emailxwebsitea163.com第3页s字基于 Visua1C#的 Directx开发实例水利与环境学院肖泽云4、四元数的三角形式5、在三维计算机图形中的应用…········;······十、摄像机变换461、准备场景自c··‘·············462、旋转摄像机.…533、通过键盘控制摄像机旋转.544、通过键盘控制摄像机缩敚75、通过鼠标控制摄像机旋转.6、通过鼠标滚轮控制摄像机缩放7、通过鼠标控制摄像机移动··垂·…·······“········“·········:··十一、地形.1、索引编号.642、规则三角网673、通过高度图生成三角网694、地形贴图5、设置深度缓冲..…..…72十维显示控件设计..751、准备工作752、上一视图与下一视图……853、附视图、左视图及前视图的实现864、常用浏览功能.··:·············4·‘···4·4··4······:·895、工具栏控件十三、绘制基本图元+垂c41、绘制离散点1002、绘制分段直线1023、绘制折线1034、绘制独立三角形1045、绘制扇形三角形∴1066、绘制三角形带“····;.·;;···········;·.....1077、四种绘制图元方法比较8、绘制六面体….......1209、绘制球体.12310、绘制圆....12811、绘制圆锥“·············“··········*13412、绘制圆柱139十四、Mesh网格1461、创建基本几何体网格1462、使用构造函数创建网络1503、从文件导入网格1564、导入Ⅹ文件的网格贴图·.·156QQ:289700062Emailxwebsitea163.com第4页s字基于 Visua1C#的 Directx开发实例水利与环境学院肖泽云5、将网格导出为Ⅹ文件1586、三维字体1597、子集、属性、邻接、复制1608、渐进网格.自c非·垂·垂,;垂垂·.1639、世界矩阵.165十五、碰撞检测1681、包围体l682、点击射线…1743、拾取对象176十六、材质、贴图与灯光··垂·…·······“········“·········.1821、材质.1822、贴图·…·+“···:·····;····:·····“···················1843、灯光190QQ:289700062Emailxwebsitea163.com第5页⑧来字基于 Visua1C#的 Directx开发实例水利与环境学院肖泽云配置环境首先,需要安装Visa1C#,WS2003、VS2005或 Express版都可以。然后再安装 DirectxSDK,本文中所配置的环境为V2005和 Directx9.0( April2006)。目前 Directx的最新版本是 Directx1,下载的网址:http://www.microsoft.com/downloads/en/resultsforcategory.aspxdisplaylang=en&categord=2&stype=n doQQ:289700062Emailxwebsitea163.com第第1页s字基于 Visua1C#的 Directx开发实例水利与环境学院肖泽云二、 Directx9.0简介Microsoft directx是一套用于创建游戏和多媒体程序的底层应用程序接口(API),它支持高性能的二维和三维图形显示、声音以及输入等Directx开发的首推T具是C++,但是由于程序语言的不断发展以及程序员自身的编程习惯,有很多程序员仍然习惯使用C#、VB。尽管到了.Net时代,这些语言开发的程序本身没有太大区别,但是各种语言仍有很多爱好者。为了使得各种语言都能开发 Directx,所有Directx9.0中实行托管代码。开发者能够用托管代码来充分利用 Directx的多媒体功能和硬件加速功能。 Directⅹ9.0的托管代码也能充分实现非托管的原始功能。下面就是 Directx9.0所支持的托管代码语言:Microsoft visual o井Microsoft visual basic. netMicrosoft visual cttMicrosoft jScript NET托管的 Directx要有以下部分组成:Direct3d GraphicsDirectDrawDirectInputDirectPlayDirectSoundAudio video playbackQQ:289700062Emailxwebsitea163.com第2页s字基于 Visua1C#的 Directx开发实例水利与环境学院肖泽云、第一个 Directx程序1、新建项目新建一个 Visual o#空项目,设置其项目名称为“第一个 DirectX程序”,如下图所新建项目项目类型①模板〔已Vsua1csaal Stdi已安装的模板Wind智能设备国 ndows应用程序园类库数据库初学者工具包Windows控件库"eb控件库+PGI Visual Fortran控制台应用程序indows服务其他语言空项目+其他项目类型拢的根板搜索联机模板用于创建本地应用程序的空项目名称①〕第一个 Directx程序位置E: \ DirectX\DirectX_C#\ProjectN[浏览0)解决方案名称第一个ctx程序回包建解决方秦的目录①)确定匚取消2、新建项在解决方案资源管理器中选择项目名称并点击右键,选择“添加—新建项”来添加一个新的文件,如下图所示:回员解决方案“第一个Det程月-一个nrpe层序!幽生成Q重新生成C清理Q发布①)新建项⑦赤加回现有项G)忝加引用)新建文件夹①添加"eb引用).圆"indw窗体m).|员查看类关系图画用户控件⑩设为启动项目色)组件调试G)类¢)剪切〔)枯贴①)移除QQ:289700062Emailxwebsitea163.com第3页s字基于 Visua1C#的 Directx开发实例水利与环境学院肖泽云3、添加窗体在弹出的“添加新项”窗体上选择“ Windows窗体”模板,然后在名称后输入Basicform.cs”,点击“添加”按钮完成添加,如下图所示:添加新项一第一个xex程序模板①〕Visual stadio已安装的模板类按口代码文件indows窗体面用户控件自定义控件国縱承的窗体通壯承的用户控件Neb自定义控件组件类s吡L数据库数据集②MML文件固XML架构XSLT文件HML页国样式表自文本文件位图文件光标文件报表图标文件Windows服务安装程序类Script文件cript文件Windows脚本宿主程序集信息文件应用程序配置文件最资源文件目设置文件回M父级曰“关于”框国调武器可视化工具园类关系图空白冒 indows窗体名称Basicorm. cs匚添加)匚取消4、添加引用在主菜单上选择“项目一一添加引用”,然后在NET中添加 Microsoft directx、Microsoft. directx. direct3D和 Microsoft directX direc3DX,如下图所示:添加引用12xxcOM项目浏览最近组件名称版本运行库Microsoft Build. visualJSharp2.0.0.0v.0.5Microsoft. CompactFramework Build Tasks 8.0.0.0v.0.5Microsoft Directx1.0.2902.0v1.1.4322Microsoft. Directx2.0.0.0v2.0.5Microsoft Directx. Audi ovi deoPlayback1.0.2902.0v1.1.4322Microsoft Directx Diagnostics1.0.2902.0v1.1.4322Mi crosoft. directx directs1.0.2902.0v1.1.4322Microsoft DirectX. Direct3DX1.0.2902.0v1.1.4322Mi crosoft. Directx. Direct3Dx1.0.2903.0v1.1.4322Microsoft DirectX. Direct3DX1.0.2904.0v1.1.4322Microsoft Directx. Direct3Dx1.0.2905.0v1.1.4322Mi crosoft. Directx. direct Dx1.0.2906.0v1.1.4322Microsoft. Directx. Direct3DX1.0.2907.0v1.1.4322Microsoft Directx, Direct3DX1.0.2908.0v1.1.4322iir T44 40n》匚确定匚取消QQ:289700062Emailxwebsitea163.com第4页s字基于 Visua1C#的 Directx开发实例水利与环境学院肖泽云打开 Basicform窗体的代码,为其添加 Directx引用,如下:using Microsoft DirectXusing Microsoft DirectX. Direct3D5、定义全局变量首先介绍一下 Device类, Device类用于完成 DirectX里所有绘图操作,我们可以把这个类假想为图形卡,场景里所有其他图形对象都依赖于 Device,计算机里可以有多个 Device对象。所以在全局变量中定义一个绘图设备,如下代码:Device device=nul1;//定义绘图设备6、设置窗体初始状态设置 BasicForm窗体的初始状态即更改 Basicform的构造涵数,如下代码public BasicFormothis. Clientsize= new size(800,600);/指定窗体尺寸this.Toxt-"第一个 Directx程序";/指定窗体标题7、定义初始化函数定义初始化函数 InitializeDirect3D(),它将告诉绘图设备如何去渲染到屏幕上以及一些异常的处理,如下代码:public bool InitializcDircct3DOtrPresentParameters presentParams new PresentParametersopresentParams. Windowed=true;/指定以 Windows窗体形式显示presentParams. Swapeffect= SwapEffect. Discard;//当前屏幕绘制后它将自动从内存中删除device new Device(0, Device Type Hardware, thisCreateFlags. SoftwarevertexProcessing, presentParams);//实例化 device对象return truecatch (DirectXException e)MessageBox.Show(e. ToString(," Error");//处理异常return falQQ:289700062Emailxwebsitea163.com第5页
用户评论