Direct3D中的纹理与映射
在Direct3D中,借助纹理映射(texture mapping)技术可将图像数据映射到三角形单元,从而显著地所绘制图景的细节和真实感。纹理用接口IDirect3DTexture9来表示。纹理类似于表面的一个像素矩阵,与表面不同的是它可被映射到三角形单元。
这一章主要学习:
1)如何将纹理的某一部分映射到三角形单元中;
2)掌握如何创建纹理;
3)掌握为创建一幅较光滑的图像,纹理应如何过滤;
1. 纹理坐标
Direct3D所用的纹理坐标系有沿着水平方向的u轴和沿垂直方向的v轴(竖直向下)构成。用坐标对(u,v)标识的纹理元素称为纹理元(texel)。另外,Direct3D为了处理不同尺度的纹理,Direct3D将纹理坐标进行了规范化,使之限定在[0,1]之间。
对于每个3D三角形单元,都可以在纹理中定义一个相应的三角形区域,然后将该三角形内的纹理映射到该3D三角形单元中。另外,为实现该映射,需要在顶点结构Vertex中添加纹理坐标,并且设定相应的顶点格式FVF,如下
const DWORD Vertex::FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1;
现在,由3个顶点对象构成的每个三角形都在纹理坐标系中定义了一个相应的纹理三角形。