OpenGL ES之VBOEBO与VAO的说明和使用

Posted ╰つ栺尖篴夢ゞ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenGL ES之VBOEBO与VAO的说明和使用相关的知识,希望对你有一定的参考价值。

一、VBO 和 EBO

  • VBO(Vertex Buffer Object)是指顶点缓冲区对象,而 EBO(Element Buffer Object)是指图元索引缓冲区对象,VAO 和 EBO 实际上是对同一类 Buffer 按照用途的不同称呼。
  • 在 OpenGL ES 2.0 编程中,用于绘制的顶点数组数据首先保存在 CPU 内存,在调用 glDrawArrays 或者 glDrawElements 等进行绘制时,需要将顶点数组数据从 CPU 内存拷贝到显存。但是,很多时候我们没必要每次绘制的时候都去进行内存拷贝,如果可以在显存中缓存这些数据,就可以在很大程度上降低内存拷贝带来的开销。
  • 在OpenGLES3.0 编程中, VBO 和 EBO 的出现就是为了解决这个问题,VBO 和 EBO 的作用是在显存中提前开辟好一块内存,用于缓存顶点数据或者图元索引数据,从而避免每次绘制时的 CPU 与 GPU 之间的内存拷贝,可以改进渲染性能,降低内存带宽和功耗。
  • OpenGL ES 3.0 支持两类缓冲区对象:顶点数组缓冲区对象、图元索引缓冲区对象。GL_ARRAY_BUFFER 标志指定的缓冲区对象用于保存顶点数组,GL_ELEMENT_ARRAY_BUFFER 标志指定的缓存区对象用于保存图元索引。
  • VBO(EBO)的创建和更新(GL_STATIC_DRAW 标志标识缓冲区对象数据被修改一次,使用多次,用于绘制):
// 创建 2 个 VBO(EBO 实际上跟 VBO 一样,只

以上是关于OpenGL ES之VBOEBO与VAO的说明和使用的主要内容,如果未能解决你的问题,请参考以下文章

LearnOpenGL - Android OpenGL ES 3.0 绘制三角形

OpenGL - 正确地将 VAO 定义与 VBO 和其他缓冲区创建分开

Android OpenGL ES 学习 – 纹理

Android OpenGL ES 学习 – 纹理

Android OpenGL ES 学习 –矩阵变换

Android OpenGL ES 学习 –矩阵变换