最佳答案
我只是想确认一下我是否理解正确(我想在 SO Chat 上问一下,但是它已经死了!) :
我们有一个顶点数组,我们通过绑定它来产生“当前”
然后我们有一个缓冲区,我们绑定到一个目标
然后我们通过 glBufferData
把那个塔吉特装满
它实际上填充了绑定到该目标的任何内容,即我们的缓冲区
然后我们调用 glVertexAttribPointer
,它描述了数据是如何布局的——数据是绑定到 GL_ARRAY_BUFFER
的任何东西
这个描述符被保存到我们的原始顶点数组中
我的理解正确吗?
文件对于一切相关性的描述有点少。
(2)是否存在某种默认的顶点数组?因为我忘记/省略了 glGenVertexArrays
和 glBindVertexArray
,没有它,我的程序运行得很好。
编辑: 我错过了一个步骤... glEnableVertexAttribArray
。
(3)在调用 glVertexAttribPointer
时,顶点属性是否绑定到顶点数组,然后我们可以在任何时候通过 glEnableVertexAttribArray
启用/禁用该属性,而不管当前绑定的是哪个顶点数组?
或者(3b)在调用 glEnableVertexAttribArray
时,顶点属性是否绑定到顶点数组,因此我们可以通过在不同时间调用 glEnableVertexAttribArray
,在不同的顶点数组绑定时,将相同的顶点属性添加到多个顶点数组?