D3D纹理(New).pdfVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
D3D纹理(New)

6.3 纹理映射 没有什么可以比使用纹理给表面增加更多的真实感。纹理可以被想象为粘贴在 表面上的墙纸,你可以把一张木头的贴图贴在一个盒子上,使它看起来像是真的用 木头作的。 6.3.1 基本概念 只有材质的实体看上去就像塑料制品,还不足以反映我们这个五彩缤纷的世界, 为此Direct3D引入了纹理(Texture )技术。纹理也就是通常所说的贴图,它通过在 三维的模型表面覆盖上二维的图片,使实体更具有真实感,比如在家具表面贴上木 纹,或者把草、泥土和岩石等图片贴在构成山的图元表面,以得到一个真实的山坡。 图6-3-1中,左边是使用纹理的战斗机模型,右边没使用纹理,显然左图更真实一些。 Direct3D支持多层纹理,最高可达8层。 图6-3-1 纹理都是一些标准的位图,支持BMP 、JPG 、PNG 、TGA等格式,以及我们超 声中会用到的PPM 、PGM格式。虽然Direct3D对纹理图片的大小没有限制,但为了 程序的执行效率,最好使用正方形图片,而且边长是2的n次方,比如64 x 64、128 x 128、256 x 256等等。 6.3.2 纹理坐标 纹理图片本身构成了一个二维的坐标空间,纹理坐标(Texture Coordinate )用 于在纹理上指定一个点,如图6-3-2所示,其中u为横坐标,v为纵坐标。不论纹理的 大小如何,其左上角总是(0,0),右下角总是(1,1),易知中心点的纹理坐标 为(0.5,0.5)。 图6-3-2 当把纹理应用于图元时,需要为每个顶点指定一组纹理坐标,标明该顶点在贴 图中的位置,从而建立起图元和纹理图片之间的映射关系。我们不妨把纹理图片想 象成一片弹性很好的橡皮薄膜,贴图过程就相当于用钉子把橡皮固定在与其纹理坐 标相对应的顶点上。 有时,我们并不满足于仅仅把纹理简单地映射到物体上,通过设置适当的纹理 映射属性,这样三维物体可以看起来更真实,更自然。比如纹理坐标的正常取值范 围为0-1,但Direct3D也允许纹理坐标取此范围之外的值,以获取某些特殊的纹理效 果。图6-3-3是一个纹理重复的例子。以下我们来看看各种不同的纹理采样属性,包 括纹理过滤和纹理寻址。 图6-3-3 D3D 的库函数DD3DXCreateTextureFromFile ()为我们提供了从磁盘图形文件 创建纹理并载入内存的快捷方法。 HRESULT D3DXCreateTextureFromFile (LPDIRECT3DDEVICE9 pDevice , //有效的 Direct3D 设备指针 LPCTSTR pSrcFile , // 图形文件的路径及文件名 LPDIRECT3DTEXTURE9 *ppTexture //存储 Direct3D 纹理的指针地址 ); D3DXCreateTexture FromFile ()支持的文件名有:*.bmp、*.dds、*.dib、*.jpg、*.png、 *.tga 以及我们会用到的*.ppm、*.pgm 等。 参数 ppTexture 返回生成的 Direct3D 纹理对象接口一指针的地址 LPDIRECT3D TEXTURES *,LPDIRECT3DTEXTURE9 定义为指向纹理接口 IDirect3DTexture9 的指针: typedef struct IDirect3DTexture9 *LPDIRECT3DTEXTURE9, *PDIRECT3DTEXTURE9; 如果从当前目录下载贴图 leafjpg,并生成纹理 g_pTexture,我们可以这样写: LPDIRECT3DTEXTURE9 g_pTexture =NULL; // g_pd3dDevice 为有效的 Direct3D 设备指针

文档评论(0)

ctuorn0371 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档