VAO: 在glvertexAttribPointe时记录glvertexAttribPointe中的参数和调用glvertexAttribPointe时的VBO。 在绑定EBO时立刻记录EBO
| 对象类型 | 是否立即记录到 VAO | 是否依赖其他函数 | 被记录在 VAO 的哪里 |
| EBO (GL_ELEMENT_ARRAY_BUFFER) | ✅ 是 | ❌ 不依赖 | 一个全局字段 |
| VBO (GL_ARRAY_BUFFER) | ❌ 否 | ✅ 依赖 glVertexAttribPointer | 每个属性槽(Attribute slot) |
VBO的作用是绑定显存中的缓冲区记录的内容是顶点数组,将数据中CPU传递的显存之中
EBO的作用同样是绑定显存中的缓冲区,但是绑定的区域和VBO不同,记录的内容是顶点数组的索引,目的在于渲染时重复的使用顶点数组中的数据*
工作流程总结:
1.创建VAO,VBO,EBO,先将VAO绑定,渲染需要的顶点属性都保存在VAO中
2.将GL_ARRAY_BUFFER和VBO绑定
3.将顶点属性数据传递到GL_ARRAY_BUFFER
4.通过glvertexAttribPointe()指定GL_ARRAY_BUFFER中的顶点属性数据的读取方式,VAO在此时记录属性读取方式和VBO。
5.将GL_ELEMENT_ARRAY_BUFFER和EBO绑定,VAO在此时记录EBO。
6.解绑VAO。(在解绑VAO之前解绑VBO对VAO中的内容没有直接影响,但是如果在解绑VAO之前解绑了EBO,VAO中记录的EBO也会删除)