对于每种缓冲区类型,都有一个特殊的函数来为它生成名称,如帧缓冲区为glGenFramebuffers
,渲染缓冲区为glGenRenderbuffers
,纹理为glGenTextures
。
但是有一个名为glGenBuffers
的函数。这个函数生成什么类型的缓冲区? &安培;如何在我的程序中使用这些缓冲区?
答案 0 :(得分:1)
glGenBuffers
为“缓冲区对象”分配名称。 OpenGL缓冲区对象表示可由应用程序和GPU访问的内存块(尽管通常不是同时访问两者)。 OpenGL可以将缓冲区对象的内容用于各种目的,单个缓冲区对象可以在其生命周期中用于多个目的,但实际上缓冲区对象通常专门为一种类型的数据创建。
通过查看可以附加缓冲区对象的绑定点列表(使用glBindBuffer
函数),可以了解缓冲区对象的用途。例如:
GL_ARRAY_BUFFER
- OpenGL将从缓冲区对象中读取顶点数据。GL_ELEMENT_ARRAY_BUFFER
- OpenGL将从缓冲区对象中读取顶点索引(例如,glDrawElements
)。GL_PIXEL_UNPACK_BUFFER
- 读取像素数据的函数(例如glTexImage2D
)将从缓冲区对象中读取该数据。还有更多。
有关更多信息,请参阅Buffer Object的OpenGL Wiki页面。