我可以用glGenBuffers
函数生成多少个缓冲区?
我可以尝试生成8192(或更多)缓冲区吗?
我只渲染一个缓冲区,但我需要存储许多缓冲区。
int i = 0;
glGetIntegerv(GL_MAX_DRAW_BUFFERS, &i);
返回8
。这是缓冲区的最大计数,即同时渲染。
我是对的吗?
答案 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.这是缓冲区的最大计数,即同时渲染。
是的,这是多目标渲染中目标缓冲区的最大计数。