缓冲区的最大计数

Max count of buffers

本文关键字:缓冲区      更新时间:2023-10-16

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。这是同时渲染的缓冲区的最大计数。

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