- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DirectX三维文字及地形场景实验-分析
《DX三维文字及地形场景实验》
实验报告
实验目的
实验内容和要求实验主要仪器设备和材料
计算机,实验
在DirectX中通过D3DXCreateFontIndirect方法来创建一个ID3DXFont接口:
HRESULT?WINAPI?D3DXCreateFontIndirect(?
LPDIRECT3DDEVICE9?pDevice, // 当前所使用的设备
CONST D3DXFONT_DESC?*pDesc, // 字体描述结构
LPD3DXFONT?*ppFont // 返回的字体接口
);
当获得了一个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的左上角输出
0xff000000 // 文字颜色:黑色
);
用具有不同高度、不同颜色的三角形网格来创建高山和低谷,以此模拟一个真实的地形。高度图是一个储存了地形各个顶点高度数据的数据集合。可以用硬盘上的图片来为地形加上纹理,也可以用程序生成地形纹理。通过计算每个方格的阴影因子来标识这个方格究竟会有多亮/多暗。阴影因素由光线向量与方格的法线向量之间的角度来计算。让摄像机在场景中移动时,需要寻找当前所处的三角形。然后,计算三角形上的两个向量,这两个向量尾部相接,且与三角形的两边重合。通过一个左上角在原点的单位化方位的x坐标与z坐标为参数,在这些向量上进行线性内插,从而求出高度值。
Terrain类提供下面两个方法来访问和修改高度图中的元素:
int Terrain::getHeightmapEntry(int row, int col)
{
return _heightmap[row * _numVertsPerRow + col];
}
void Terrain::setHeightmapEntry(int row, int col, int value)
{
_heightmap[row * _numVertsPerRow + col] = value;
}
Terrain类提供了两种方法来为地形加上纹理,较简单的方法是载入并使用一个先前做好的纹理图。Terrain类中实现了下面的方法,把图片文件中的纹理数据载入到IDirect3DTexture9对象中,并使用_tex指针指向它。Terrain::draw方法在渲染地形之前将会设置_tex的值。具体参见教材P216。
实验报告内容:
程序结果分析
源程序
#include d3dUtility.h
#include terrain.h
#include camera.h
#include cube.h
#include vertex.h
#include pSystem.h
#include cstdlib
#include ctime
//
// Globals
//
IDirect3DDevice9* Device = 0;
const int Width = 1000;
const int Height = 700;
ID3DXMesh* Objects[4] = { 0, 0, 0, 0 };
D3DXMATRIX Worlds[4];
D3DMATERIAL9 Mtrls[4];
ID3DXMesh* Object;
D3DXMATRIX World;
D3DMATERIAL9 Mtrl;
psys::PSystem* Sno = 0;
//Camera TheCamera(Camera::AIRCRAFT);
Cube* Box = 0;
D3DXMATRIX World1;
IDirect3DTexture9* Tex = 0;
Terrain* TheTerrain = 0;
Camera TheCamera(Camera::LANDOBJECT);
ID3DXMesh* Text = 0;
// Framework Functions
bool Setup()
{
// Create the terrain.
D3DX
您可能关注的文档
最近下载
- 高职入学考试英语复习指导丛书—语法专项训练教学课件(第四章数词).pptx VIP
- 2025年秋统编版语文三年级上册全册教学课件(课标版).pptx
- 2025年最新人教版小学二年级数学上册教学计划及进度表(新课标,新教材).docx
- 小区监控系统设计方案.pptx VIP
- 丹方模拟器1.32(新增龙宫草药)(1).xlsx VIP
- 等一朵花开读书分享PPT.pptx VIP
- 2012国际严重脓毒症和脓毒症休克治疗指南(SSC)..doc VIP
- 【免费】小学一年级数学“凑十法”练习题100道 .pdf VIP
- 幼儿园装修工程实施方案(模板范文).docx
- 高中物理必修二学历案.docx VIP
文档评论(0)