glGenBuffers
我可以使用函数生成多少个缓冲区?我可以尝试生成 8192(或更多)缓冲区吗?
我只渲染一个缓冲区,但我需要存储许多缓冲区。
int i = 0;
glGetIntegerv(GL_MAX_DRAW_BUFFERS, &i);
返回8
。这是缓冲区的最大计数,即同时渲染。
我对吗?
该值与片段着色器可以写入的缓冲区GL_MAX_DRAW_BUFFERS
无关(参见 参考资料)。glGenBuffers
glDrawBuffers
标准中对缓冲区的数量没有限制,您可以创建任意数量的缓冲区。但是,您受到内存的限制,因此如果您计划存储大量数据,则类似的调用glBufferData
可能会失败GL_OUT_OF_MEMORY
我可以使用 glGenBuffers 函数生成多少个缓冲区?
glGenBuffers 不分配任何存储,它只获取缓冲区的名称/ID。对此的限制纯粹是特定于实现的,但理论上仅受可用内存和管理结构大小的限制。更多的限制因素是您分配的缓冲存储量。
问题当然是:为什么需要这么多缓冲区?为什么你是像素缓冲对象或颜色缓冲附件?纹理不是更适合您的数据的存储对象吗?
返回 8。这是缓冲区的最大计数,同时渲染。
是的,这是多目标渲染中目标缓冲区的最大计数。