DirectX三维文字及地形场景实验-

DirectX三维文字及地形场景实验-

ID:39548520

大小:360.00 KB

页数:10页

时间:2019-07-06

DirectX三维文字及地形场景实验-_第1页
DirectX三维文字及地形场景实验-_第2页
DirectX三维文字及地形场景实验-_第3页
DirectX三维文字及地形场景实验-_第4页
DirectX三维文字及地形场景实验-_第5页
资源描述:

《DirectX三维文字及地形场景实验-》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《DX三维文字及地形场景实验》实验报告一、实验目的(1)通过实验,运用DirectX三维图形编程的知识、原理和技术;(2)掌握在综合三维场景的基础上,设计一个三维文字及地形的实现方法;(3)通过使用VC++编程环境实现三维场景中的三维文字及地形的设计;二、实验内容和要求(1)在VC++编程环境下建立三维场景,场景中包括:1.茶壶模型、圆柱体模型。2.茶壶模型使用黄色材质。3.圆柱体模型使用纹理贴图材质。4.设置一个电光源灯光系统。(2)在VC++编程环境下建立一个三维文字及地形的设计。1.在三维场景中,使用

2、地形文件建立一个三维地形。2.同时输出三维文字,文字内容包括:学生名字、学号。3.要求能够使用粒子系统实现烟火/雪花等特效。三、实验主要仪器设备和材料计算机,VC++2005语言程序设计环境和DirectX三维图形开发环境。四、实验原理D3DX库是使用ID3DXFont接口来在Direct3D应用程序中输出文字的。这个接口通过GDI(图形设备接口)来输出文字,因此用这个接口完成任务的时候会有些效率上的损失。但是,运用了GDI,ID3DXFont可以处理复杂的文字和文字格式。在DirectX中通过D3DXCr

3、eateFontIndirect方法来创建一个ID3DXFont接口:·HRESULT WINAPI D3DXCreateFontIndirect( ·LPDIRECT3DDEVICE9 pDevice,//当前所使用的设备·CONSTD3DXFONT_DESC *pDesc,//字体描述结构·LPD3DXFONT *ppFont//返回的字体接口·);当获得了一个ID3DXFont接口以后,可以方便地利用ID3DXFont接口的DrawText方法来输出文字:·INTID3DXFont::DrawText

4、(·LPCSTRpString,·INTCount,·LPRECTpRect,·DWORDFormat,·D3DCOLORColor·);范例代码如下:·Font->DrawText(·"HelloWorld",//待输出字符串·-1,//NULL结尾(Nullterminating)的字符串·&rect,//决定文字输出到屏幕的位置·DT_TOP

5、DT_LEFT,//在指定RECT的左上角输出·0xff000000//文字颜色:黑色·);用具有不同高度、不同颜色的三角形网格来创建高山和低谷,以此模拟一个真

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

7、:·intTerrain::getHeightmapEntry(introw,intcol)·{·return_heightmap[row*_numVertsPerRow+col];·}·voidTerrain::setHeightmapEntry(introw,intcol,intvalue)·{·_heightmap[row*_numVertsPerRow+col]=value;·}Terrain类提供了两种方法来为地形加上纹理,较简单的方法是载入并使用一个先前做好的纹理图。Terrain类中实现了下面

8、的方法,把图片文件中的纹理数据载入到IDirect3DTexture9对象中,并使用_tex指针指向它。Terrain::draw方法在渲染地形之前将会设置_tex的值。具体参见教材P216。一、实验报告内容:(1)程序结果分析(1)源程序#include"d3dUtility.h"#include"terrain.h"#include"camera.h"#include"cube.h"#include"vertex.h"#include"pSystem.h"#include#includ

9、e////Globals//IDirect3DDevice9*Device=0;constintWidth=1000;constintHeight=700;ID3DXMesh*Objects[4]={0,0,0,0};D3DXMATRIXWorlds[4];D3DMATERIAL9Mtrls[4];ID3DXMesh*Object;D3DXMATRIXWorld;D3DMATERIAL9Mtrl;p

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。