最大缓冲区数

时间:2012-05-09 08:25:12

标签: c++ opengl buffer

我可以用glGenBuffers函数生成多少个缓冲区? 我可以尝试生成8192(或更多)缓冲区吗?

我只渲染一个缓冲区,但我需要存储许多缓冲区。

int i = 0;
glGetIntegerv(GL_MAX_DRAW_BUFFERS, &i);

返回8。这是缓冲区的最大计数,即同时渲染。

我是对的吗?

2 个答案:

答案 0 :(得分:5)

GL_MAX_DRAW_BUFFERS值与glGenBuffers无关,但对于缓冲区,片段着色器可以写入(请参阅glDrawBuffers)。

标准中的缓冲区数量没有限制,您可以根据需要创建任意数量的缓冲区。但是,您受到内存的限制,因此如果您计划存储大量数据,glBufferData之类的调用可能会因GL_OUT_OF_MEMORY

而失败

答案 1 :(得分:2)

  

我可以用glGenBuffers函数生成多少个缓冲区?

glGenBuffers不分配任何存储,它只获取缓冲区的名称/ ID。对此的限制纯粹是针对具体实现的,但理论上只是可用内存和管理结构的大小。更多限制因素是您分配的缓冲存储量。

问题当然是:为什么需要这么多缓冲区?你为什么要使用Pixes Buffer Objects或Color Buffer Attachments?纹理不是更适合数据的存储对象吗?

  

返回8.这是缓冲区的最大计数,即同时渲染。

是的,这是多目标渲染中目标缓冲区的最大计数。