glBufferData如何知道要使用哪个VBO?

时间:2013-01-05 13:21:32

标签: opengl opengl-es opengl-es-2.0

以下是glBufferData的正式声明,用于填充VBO:

void glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);

然而,令人困惑的是,你可以有多个VBO,但是这个函数不需要特定VBO的句柄,那么它如何知道你想要的VBO?

target参数可以是GL_ARRAY_BUFFERGL_ELEMENT_ARRAY_BUFFER但我的理解是您可以拥有多个参数。

类似glBufferSubData方法的情况也是如此,该方法旨在随后在VBO上调用 - 它如何知道要处理哪个VBO?

3 个答案:

答案 0 :(得分:4)

这是一个common pattern in OpenGL,用于将对象绑定到目标,并通过发出没有句柄的函数调用对其执行操作。这同样适用于纹理。

答案 1 :(得分:0)

使用缓冲区对象的OpenGL操作,利用已使用目标上最近一次调用glBindBuffer绑定的缓冲区。

答案 2 :(得分:0)

glBindBuffer是一个将给定缓冲区公开为绑定的函数。这样的glBufferData然后通过副作用通过当前绑定的缓冲区对象访问它。