我已经从内存浪费的顶点属性切换到UBO以使用更少的内存。我想创建包含给定模型数据的大缓冲区(包含1024 * 1024以上的值)。接下来对于每个模型,我将离开程序和顶点缓冲区(因为网格是相同的)并且为下一个模型更改UBO。因此,每个UBO将被设置一次,然后只有绑定更改为不同的缓冲区。
问题是我无法创造如此大的数组。像这样的代码没问题:
layout(std140) uniform someDataUniform {
int someData[1201];
};
但是像这样的代码崩溃了:
layout(std140) uniform heightDataUniform {
int heightData[1201*1201];
};
这个问题有解决方法吗?通过索引随机访问创建大型可绑定缓冲区?甚至可能是二维阵列(不是必要的)?
OpenGL 3.3,GLSL 330。