浅谈对VAO,VBO,EBO的理解

71 阅读1分钟

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也会删除)