假设我有一个着色器存储缓冲区,并希望有几个视图进入它,例如:
layout(std430,binding=0) buffer FloatView { float floats[]; };
layout(std430,binding=0) buffer IntView { int ints[]; };
这是合法的 GLSL 吗? opengl.org说不:
两个块不能使用相同的索引。
但是,我在GL 4.5 Core Spec或GLSL 4.50 Spec(或ARB_shader_storage_buffer_object 扩展描述)中找不到这样的语句,我的 NVIDIA 驱动程序似乎编译这样的代码没有错误或警告。