因为图片的数量较多,不想过多开辟纹理的ID所以想要尝试纹理数组,但是经过纹理的设置后始终显示白色,以下是设置
glGenTextures(1, &tex);
glBindTexture(GL_TEXTURE_2D_ARRAY, tex);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);//x方向
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);//y方向
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_RGBA, image[0].width(), image[0].height(), image.size(), 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);//开辟空间
for (int i = 0; i < image.size(); ++i)
{
glTexSubImage3D(GL_TEXTURE_2D_ARRAY, 0, 0, 0, i, image[i].width(), image[i].height(), 1, GL_RGBA, GL_UNSIGNED_BYTE, image[i].bits());
}
因为不太会使用shader,所以我使用了glTexCoord的方式进行调用,但是始终显示白色纹理,利用二维纹理贴图进行查看后,发现图像没有问题但是显示不正确。
经过论坛大神解惑,使用纹理数组(只生成一个ID,纹理采用更新的形式)必须是通过shader来进行绘制,不可以使用固定管线。