我问的可能是一个简单的问题。我有一个image2D纹理的纹理数组(GL_TEXTURE_2D_ARRAY)。我通过image2DArray访问片段着色器中的数组。如何访问数组的图像? imageLoad()有一个图层号的参数?我已阅读here和here,但未能弄清楚它是如何完成的。
问题是,如果我这样访问它:
void main(void)
{
color = vec4(imageLoad(output_image, ivec3(gl_FragCoord.xy,0) ).xyzw) / 255.0;
}
也就是说,第三个纹理坐标是纹理层索引。我将纹理输出到屏幕上,但它变为静态(不随凸轮移动而移动)并移位。
更新
好吧,这是我的错。我引用了错误的纹理对象。是的,imageLoad中ivec3的第三个坐标应该是纹理数组层索引。