相关疑难解决方法(0)

在OpenGL中绑定点的目的?

我不明白GL_ARRAY_BUFFEROpenGL 中绑定点(例如)的目的是什么.据我所知,glGenBuffers()创建了一种指向位于GPU内存中某处的顶点缓冲区对象的指针.

所以:

glGenBuffers(1, &bufferID)
Run Code Online (Sandbox Code Playgroud)

意味着我现在有一个句柄,bufferID,到图形卡上的1个顶点对象.现在我知道下一步是将bufferID绑定到绑定点

glBindBuffer(GL_ARRAY_BUFFER, bufferID)
Run Code Online (Sandbox Code Playgroud)

这样我就可以使用该绑定点使用如下glBufferData()函数发送数据:

glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW)
Run Code Online (Sandbox Code Playgroud)

但为什么我不能只使用bufferID来指定我想要发送数据的位置呢?就像是:

glBufferData(bufferID, sizeof(data), data, GL_STATIC_DRAW)
Run Code Online (Sandbox Code Playgroud)

然后当调用绘图函数时,我也只是将任何ID放入我想要绘制绘图函数的VBO中.就像是:

glDrawArrays(bufferID, GL_TRIANGLES, 0, 3)
Run Code Online (Sandbox Code Playgroud)

为什么我们需要额外的间接步骤glBindBuffers

c++ opengl opengl-es vertex-buffer vertex-array-object

6
推荐指数
1
解决办法
1004
查看次数