纹理是一个用来保存图像元素值的OpenGL ES缓存。
当一个图像初始化一个纹理缓存之后,在这个图像中的每一个像素变成了纹理中的一个纹素。与像素类似,纹素用来保存颜色数据。像素和纹素的微妙差别:像素通常用来表示图像上的点,某图像长多少像素,宽多少像素。而纹素存在于一个没有尺寸的数学坐标系中。
一个2D的纹理坐标系,纹理的尺寸永远是在S(类似笛卡尔坐标系的X轴)轴上的0到1,在T(类似笛卡尔坐标系的Y轴)轴上的0到1,一个高1像素,宽64像素的图像初始化的纹理会沿着T轴有1纹素,沿着S轴有64纹素。
帧缓存的像素坐标叫做视口坐标(viewport)。 转换几何数据为帧缓存的像素的过程叫做点阵化(rasterizing),每个颜色像素叫做片元。当OpenGL ES没有使用纹理来计算片元的颜色时,GPU会根据包含该片元对象的顶点的颜色来计算片元的颜色,当OpenGL ES使用纹理来计算时,GPU会根据当前绑定纹理的对应纹素来计算片元的颜色。
对齐纹理及顶点和片元的颜色这种关系叫做映射。除了X,Y,Z坐标外,顶点还会提供U和V坐标,U坐标会映射顶点在视口坐标的最终位置到纹理中沿着S轴的某个位置,V坐标则会映射顶点在视口坐标的最终位置到纹理中沿着T轴的某个位置,GPU会根据U和V坐标从绑定的纹理中选择对应的纹素,这个过程叫做取样。