以下是glBufferData
的正式声明,用于填充VBO:
void glBufferData(GLenum target, GLsizeiptr size, const GLvoid* data, GLenum usage);
然而,令人困惑的是,你可以有多个VBO,但是这个函数不需要特定VBO的句柄,那么它如何知道你想要的VBO?
target
参数可以是GL_ARRAY_BUFFER
或GL_ELEMENT_ARRAY_BUFFER
但我的理解是您可以拥有多个参数。
类似glBufferSubData
方法的情况也是如此,该方法旨在随后在VBO上调用 - 它如何知道要处理哪个VBO?
答案 0 :(得分:4)
这是一个common pattern in OpenGL,用于将对象绑定到目标,并通过发出没有句柄的函数调用对其执行操作。这同样适用于纹理。
答案 1 :(得分:0)
使用缓冲区对象的OpenGL操作,利用已使用目标上最近一次调用glBindBuffer绑定的缓冲区。
答案 2 :(得分:0)
glBindBuffer
是一个将给定缓冲区公开为绑定的函数。这样的glBufferData
然后通过副作用通过当前绑定的缓冲区对象访问它。