我有一个GL_TEXTURE_2D_ARRAY,我用空数据创建,然后给计算着色器计算一些值,这很好用,我得到了我想要的纹理中的值。
现在我试图在片段着色器中读取数据以产生一些输出,我将其传递出来:
glActiveTexture(GL_TEXTURE0);
glUniform1i(glGetUniformLocation(programID, "textureSampler"), 0);
glBindTexture(GL_TEXTURE_2D_ARRAY, textureID);
然后我调用glDrawElements绘制四边形。在片段着色器本身中,我有代码:
uniform sampler2DArray textureSampler;
然后我执行测试以查看纹理是否已成功传递到着色器:
vec4 test = texture(textureSampler, ivec3(0,0,0));
if (test == vec4(0.0,0.0,0.0,1.0))
{
color = vec4(1.0,0.0,0.0,1.0);
}
我最终得到一个红色四边形,这意味着纹理查找的结果是vec4(0.0,0.0,0.0,1.0),这不应该基于我在计算着色器和测试中编写的值。我事后做。我已经检查过,每一个纹素都是一样的,所以我猜测我在纹理传递过程中做错了什么可以让任何人发现它是什么?