OpenGL总结5-纹理数组坑

因为图片的数量较多,不想过多开辟纹理的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来进行绘制,不可以使用固定管线。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值