3D游戏从入门到精通-26
在D3D里,纹理的功能是非常强大的,还有很多功能,比如纹理环绕、纹理动画、纹理重复、多重纹理、纹理溶合、立方体包围盒纹理、光线纹理、纹理管理等等。在这里先学习简单的纹理,并且灵活地使用它,后面再慢慢地深入去学习。下面就详细地解释第一个纹理例子。实现的纹理如下图所示:
![](http://p.blog.csdn.net/images/p_blog_csdn_net/caimouse/71665/o_%e4%be%8b3_12_1.bmp)
从上面图片看到,纹理贴到两个三角形上面,就太像木板了。因此纹理在实现真实性起到很大的作用,目前的游戏都是大量地使用纹理贴图,来达到虚拟现实世界。要显示一个简单的纹理,要经历下面的步骤:
1) 创建纹理的顶点格式
前面很多例子使用的顶点格式,都是没有纹理坐标的,所以要在顶点结构里加入纹理坐标。如下面所示:
//定义顶点缓冲区里用到的顶点格式。
struct VT_CAITEXTURESIMPLE
{
D3DXVECTOR3 vPosition; // 顶点位置。
float fTu, fTv; //纹理坐标。
static const DWORD dwFVF = D3DFVF_XYZ | D3DFVF_TEX1;
};
vPosition是顶点的位置,跟前面的例子是一样的。
fTu,FTv是纹理坐标,每个顶点里都要设置纹理二维坐标是多少,然后D3D就会根据这个两顶点的坐标值到纹理贴图找到对应点的像素值,然后显示到屏幕上。
2) 加载纹理
纹理贴图从那里来呢?可以从文件、资源和程序动态创建。这里是从磁盘文件读取出来的。下面的代码就是从文件里加载纹理贴图:
//
//加载纹理。
//
if (LoadTextureFromFile() != S_OK)
{
return S_FALSE;
}