3D游戏从入门到精通-26

在D3D里,纹理的功能是非常强大的,还有很多功能,比如纹理环绕、纹理动画、纹理重复、多重纹理、纹理溶合、立方体包围盒纹理、光线纹理、纹理管理等等。在这里先学习简单的纹理,并且灵活地使用它,后面再慢慢地深入去学习。下面就详细地解释第一个纹理例子。实现的纹理如下图所示:
3D游戏从入门到精通-26
 
 
从上面图片看到,纹理贴到两个三角形上面,就太像木板了。因此纹理在实现真实性起到很大的作用,目前的游戏都是大量地使用纹理贴图,来达到虚拟现实世界。要显示一个简单的纹理,要经历下面的步骤:
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;
 }
 
这里调用函数 LoadTextureFromFile 加载纹理,在那个函数里是调用 D3DX 的函数来加载,再来仔细地看看这个函数的实现。 

你可能感兴趣的:(游戏)