清华大学DirectX游戏编程第7章(全20章)

清华大学DirectX游戏编程第7章(全20章)

ID:38501888

大小:692.00 KB

页数:17页

时间:2019-06-13

清华大学DirectX游戏编程第7章(全20章)_第1页
清华大学DirectX游戏编程第7章(全20章)_第2页
清华大学DirectX游戏编程第7章(全20章)_第3页
清华大学DirectX游戏编程第7章(全20章)_第4页
清华大学DirectX游戏编程第7章(全20章)_第5页
资源描述:

《清华大学DirectX游戏编程第7章(全20章)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章纹理纹理映射是将指定的图像信息映射到三角形上的技术,纹理映射技术可以显著地增强场景的细节表现和真实感。Direct3D中使用IDirect3DTexture9接口代表一个纹理。纹理是类似于表面缓冲区的像素矩阵,但是纹理可以映射到三角形上。主要目标:学习如何将纹理的部分内容映射到三角形上。学习如何创建纹理。学习如何使用纹理过滤来生成一个更加平滑的图像。27.1纹理坐标Direct3D使用的纹理坐标系统是由水平方向的u轴和垂直方向的v轴组成的。注意纹理坐标系统中u轴和v轴的指向,其中v轴指向下方(见图7.2)。对任何的三维空间的三角形,都需要在纹理中找到一个对应

2、的三角形,这个平面三角形上的纹素将映射到三维空间的三角形上。37.1纹理坐标例如在图7.3中,左边是三维空间中的一个三角形,右边是纹理上定义的一个平面三角形,这个平面三角形就是将要映射到三维三角形上的纹理。为了完成这种映射,需要再次改变顶点结构:将一对纹理坐标值添加到顶点结构中,用于指定这个顶点在纹理图片上的位置:structVertex{float_x,_y,_z;float_nx,_ny,_nz;float_u,_v;//纹理坐标staticconstDWORDFVF;};constDWORDVertex::FVF=D3DFVF_XYZ

3、D3DFVF_NORM

4、AL

5、D3DFVF_TEX1;47.2创建并应用纹理通常是从存放在磁盘中的图片文件中获取纹理数据,然后加载到IDirect3DTexture9对象中,可以通过下面的D3DX函数完成该步骤:HRESULTD3DXCreateTextureFromFile(LPDIRECT3DDEVICE9pDevice,//创建纹理的设备LPCSTRpSrcFile,//加载图片的文件名LPDIRECT3DTEXTURE9*ppTexture//代表纹理接口的指针);该函数可以加载下列格式的图片——即BMP、DDS、DIB、JPG、PGN和TGA。57.2创建并应用纹理如果要将指定

6、纹理设定为当前纹理,可使用SetTexture函数:HRESULTIDirect3DDevice9::SetTexture(DWORDStage,//0~7中的一个数,指定纹理阶段IDirect3DBaseTexture9*pTexture//要设置的纹理指针);如果三角形要使用不同的纹理,可以参照以下代码来实现:Device->SetTexture(0,_tex0);drawTrisUsingTex0();Device->SetTexture(0,_tex1);drawTrisUsingTex1();67.3纹理过滤当纹理三角形比屏幕三角形小时,需要将纹理三角形

7、放大;当纹理三角形比屏幕三角形大的时候,纹理三角形需要缩小。这两种情况下都会出现失真。过滤就是Direct3D用来减少这种失真现象的技术。Direct3D支持三种过滤方法,每种方法提供了不同的过滤品质。纹理过滤用IDirect3DDevice9::SetSamplerState方法进行设置。最近点取样方法,该方法为默认的过滤方法。线性纹理过滤各向异性纹理过滤77.4多纹理映射创建多纹理映射链实质就是为纹理创建一系列具有不同分辨率的纹理,并预先指定小分辨率纹理的过滤级别,这样才能保持纹理细节,如图7.4所示。87.4.1多纹理映射过滤多纹理映射过滤是用于控制Dire

8、ct3D如何使用多纹理映射的技术,可以像下面的代码这样来设置多纹理映射过滤:Device->SetSamplerState(0,D3DSAMP_MIPFILTER,Filter);通过设置Filter参数为不同的标志,可以获得三个可选的过滤方法:D3DTEXF_NONE——表示关闭多纹理映射。D3DTEXF_POINT——表示Direct3D将选择最接近屏幕三角形大小的一级纹理。D3DTEXF_LINEAR——表示Direct3D将选择两个最接近屏幕三角形大小的纹理级别97.4.2在Direct3D中使用多纹理映射在Direct3D中使用多纹理映射是相当容易的,如

9、果设备支持多纹理映射,通过使用D3DXCreateTextureFromFile函数将创建一个多纹理映射链。另外,Direct3D将会自动选择最适合屏幕三角形大小的一级纹理。由此可见,使用多纹理映射是十分方便的,因为大部分工作都是由Direct3D自动完成的。107.5纹理坐标寻址模式纹理坐标超过这个范围后的行为由Direct3D寻址类型来决定。Direct3D中的寻址类型主要有四种:纹理缠绕、边框颜色、纹理夹持和镜像纹理,图7.5~6.8分别是这些不同纹理寻址模式的效果。117.5纹理坐标寻址模式在效果图中,四边形的四个顶点纹理坐标被指定为(0,0),(0,3)

10、,(3,0

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

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

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