GLSL错误C3012:计算着色器中的布局说明符“绑定”的值无效8

时间:2013-08-14 20:48:05

标签: opengl glsl

我使用的是GeForce GTX 670,我真的只限于8个布局说明符吗?

我真的认为这不仅仅是......我的GL_MAX_IMAGE_UNITS是30k +

来自我的计算着色器的一些示例代码提供了错误:

layout (local_size_x = 256) in;

layout (rgba32f, binding = 0) uniform image1D a;
layout (rgba32f, binding = 1) uniform image1D b;
layout (rgba32f, binding = 2) uniform image1D c;
layout (rgba32f, binding = 3) uniform image1D d;
layout (rgba32f, binding = 4) uniform image1D e;
layout (rgba32f, binding = 5) uniform image1D f;
layout (rgba32f, binding = 6) uniform image1D g;
layout (rgba32f, binding = 7) uniform image1D h;
layout (rgba32f, binding = 8) uniform image1D i;

void main(void)
{ 
}

如果我使用“location”而不是“binding”,着色器将编译,但不会写入任何纹理......

1 个答案:

答案 0 :(得分:3)

8个图像单位是GL 4.3规范要求的最小值。它可能是当前硬件的标准。

然而,没有理由为什么你应该受到限制。只需使用1D array texture;这样,你可以根据需要写入尽可能多的“1D纹理”。