因为图片的数量较多,不想过多开辟纹理的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来进行绘制,不可以使用固定管线。
本文探讨了在处理大量图片时使用纹理数组的技巧,详细分析了如何避免因频繁开辟纹理ID导致的问题。作者分享了在尝试使用纹理数组时遇到的显示白色纹理的困扰,并通过论坛高手的指导找到了解决方案:纹理数组必须配合Shader使用,而非传统固定管线。

2721

被折叠的 条评论
为什么被折叠?



