1.理解纹理
OpenGL中的纹理可以用来表示图像,照片,甚至由一个数学算法生成的分形数据。每个二维的纹理都由许多小的纹理元素组成,它们是小块的数据,类似于我们前面讨论过的片段和像素。要使用纹理,最常用的方式是直接从一个图像文件加载数据。
每个二维纹理都有其自己的坐标空间,其范围是从一个拐角的(0,0)到另一个拐角的(1,1)。按照惯例,一个维度叫做S,而另一个称为T。当我们想要把一个纹理应用于一个三角形或一组三角形的时候,我们要为每个顶点指定一组ST纹理坐标,以便OpenGL知道需要用那个纹理的哪个部分画到每个三角形上。这些纹理坐标有时也会被称为UV纹理坐标。如图:
图1 OpenGL二维纹理坐标
对一个OpenGL纹理来说,它没有内在的方向性,因此我们可以使用不同的坐标把它定向到任何我们喜欢的方向上。然而,大多数计算机图像都有一个默认的方向,它们通常被规定为Y轴向下,Y的值随着向图像的底部移动而增加。只要我们记住,如果想用正确的方向观察图像,那纹理坐标就必须要考虑这点,这就不会给我们带来任何麻烦。
在标准OpenGL ES 2.0中,纹理不必是正方形,但是每个维度都应该是2的幂(POT)。这就意味着每个维度都是这样的一个数字,如128,256,