着色器可以一次性访问几个纹理对象,我们可以进一步使用称为纹理数组的特性。
在纹理数组上,我们可以将整个数组的纹理图像绑定到一个纹理对象上,然后在着色器当中对他们进行检索,这样就大大增加着色器可用纹理数据的数量。
(1)加载2D纹理数组
纹理数组添加了两个新的纹理对象作为大多数纹理管理函数的有效参数:GL_TEXTURE_1D_ARRAY, GL_TEXTURE_2D_ARRAY。对于这些二维月亮,就像是一般纹理一样将他们创建和绑定到纹理上,不同的只是在这里改变了target参数。
glGenTextures(1, &moonTexture);
glBindTexture(GL_TEXTURE_2D_ARRAY, moonTexture);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER,