2

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?

4

3 回答 3

4

这是OpenGL中的一种常见模式,用于将对象绑定到目标并通过发出不带句柄的函数调用对其执行操作。这同样适用于纹理。

于 2013-01-05T14:12:56.503 回答
0

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

于 2013-01-05T13:32:48.473 回答
0

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

于 2013-01-05T20:28:06.397 回答