ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:964.82KB ,
资源ID:5196622      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5196622.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(directX游戏编程实验.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

directX游戏编程实验.docx

1、directX游戏编程实验directX游戏编程实验*DirectX角色游戏编程(2011-2012学年第2学期)实验报告学号:E*班级:10数媒(2)班浙江理工大学信息学院实验指导书实验名称:DirectX三维文字场及地形景实验 学时安排:3实验类别:综合设计型实验 实验要求:1人1组 一、实验目的(1) 通过实验,运用DirectX三维图形编程的知识、原理和技术;(2) 掌握在综合三维场景的基础上,设计一个三维文字及地形的实现方法;(3) 通过使用VC+编程环境实现三维场景中的三维文字及地形的设计。二、实验仪器计算机,VC2005语言程序设计环境 和DirectX 三维图形开发环境三、实验

2、原理D3DX库是使用ID3DXFont接口来在Direct3D应用程序中输出文字的。这个接口通过GDI(图形设备接口)来输出文字,因此用这个接口完成任务的时候会有些效率上的损失。但是,运用了GDI,ID3DXFont可以处理复杂的文字和文字格式。在DirectX中通过D3DXCreateFontIndirect方法来创建一个ID3DXFont接口:HRESULTWINAPID3DXCreateFontIndirect(LPDIRECT3DDEVICE9pDevice, / 当前所使用的设备CONST D3DXFONT_DESC*pDesc, / 字体描述结构LPD3DXFONT*ppFont

3、/ 返回的字体接口);当获得了一个ID3DXFont接口以后,可以方便地利用ID3DXFont接口的DrawText方法来输出文字:INT ID3DXFont:DrawText( LPCSTR pString, INT Count, LPRECT pRect, DWORD Format, D3DCOLOR Color);范例代码如下: Font-DrawText( Hello World, / 待输出字符串 -1, / NULL结尾(Null terminating)的字符串 &rect, / 决定文字输出到屏幕的位置 DT_TOP | DT_LEFT, / 在指定RECT的左上角输出 0xf

4、f000000 / 文字颜色:黑色 ); 用具有不同高度、不同颜色的三角形网格来创建高山和低谷,以此模拟一个真实的地形。高度图是一个储存了地形各个顶点高度数据的数据集合。可以用硬盘上的图片来为地形加上纹理,也可以用程序生成地形纹理。通过计算每个方格的阴影因子来标识这个方格究竟会有多亮/多暗。阴影因素由光线向量与方格的法线向量之间的角度来计算。让摄像机在场景中移动时,需要寻找当前所处的三角形。然后,计算三角形上的两个向量,这两个向量尾部相接,且与三角形的两边重合。通过一个左上角在原点的单位化方位的x坐标与z坐标为参数,在这些向量上进行线性内插,从而求出高度值。Terrain类提供下面两个方法来访

5、问和修改高度图中的元素:int Terrain:getHeightmapEntry(int row, int col) return _heightmaprow * _numVertsPerRow + col;void Terrain:setHeightmapEntry(int row, int col, int value) _heightmaprow * _numVertsPerRow + col = value;Terrain类提供了两种方法来为地形加上纹理,较简单的方法是载入并使用一个先前做好的纹理图。Terrain类中实现了下面的方法,把图片文件中的纹理数据载入到IDirect3DT

6、exture9对象中,并使用_tex指针指向它。Terrain:draw方法在渲染地形之前将会设置_tex的值。具体参见教材P216。四、源程序、运行结果与测试分析 本程序在Cube程序上做修改(因为是旋转的立方体,所以截图时容易辨别是立方体): 在d3dUtility.h文件中加入:在d3dUtility.cpp文件中加入:首先给立方体创建纹理: 创建黄色材质的茶壶:建立点光源: 最后释放内存:实验结果:制作好立方体与茶壶后添加到地形文件terrainDriver.cpp中,修改世界坐标使它们能浮现在地形上面改变立方体旋转方式,使其绕y轴旋转,这里由于不会使物体绕其本身的的轴旋转,如果按照之

7、前绕x和y轴旋转的话就是在做类似地球公转的运动,如下图: 实验结果: 在terrainDriver.cpp中添加文字:定义两个文字接口:,把定义的世界坐标Worlds改为有两个元素是数组Worlds0表示茶壶的世界坐标,Worlds1表示文字Text的时间坐标,在bool setup()里声明Worlds1的世界坐标位置:在Display()函数中画出文字:在Cleanup()中加入实验结果: 定义雪花和烟花:在setup()中建立雪花和烟花:在Display()中画出雪花和烟花:开始时把雪花画在了地形的前面出现了下面的结果,不知道出现了什么问题,后来才发现了。实验结果:五、心得体会虽然这次实

8、验做出了效果,也让我更深入地了解了DirectX关于世界坐标、纹理、例子系统及在画物体时的先后顺序,但还是存在很多的问题需要解决,在绘制立方体的纹理时,不是很难,其他代码书上也有例子可以参考,所以代码的问题不是很大,但在让这些出现在地形上碰到了很多问题,刚开始的时候不知道,做好时一直没有出现立方体和茶壶等,改变了它们的世界坐标位置后发现之前cube里立方体是绕x和y轴旋转的,改变位置后台还是这样的,想把它改成绕自己的轴旋转,但不会,也找不到这样的资料,未来有效果就只好改成绕y轴旋转;在做三维文字的时候,也不会修改其字体大小和朝向;制作雪花的时候,想改成自己想要的图片,但不知道为什么产生的效果就跟把雪花画在地形之前一样;由于时间关系也没有更深入的去了解地形。通过这次实验,让我慢慢的喜欢上了编程,发现这个东西还蛮有趣的,虽然还不是很会做东西,但从不会一点点会起来,也让我自己有了成就感。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1