欢迎光临散文网 会员登陆 & 注册

OpenGL中对VAO和VBO的理解

2023-05-07 22:51 作者:应如是呀呀呀呀  | 我要投稿

在之前一次面试中被问到过VAO和VBO分别是什么,因为自己学的不扎实导致没答上来,最近重新开始复习OpenGL,查阅了许多教程后对VAO和VBO有了新的理解

首先VBO(Vertex Buffer Object)是被用来存放顶点(Vertices)数据的,因为计算机在CPU与GPU通信时的消耗比较大,所以尽量把数据打包一起送往GPU,所以就可以用VBO来存放顶点数据然后传递给GPU

那么VAO是什么呢?

说实话我一开始被这张图搞蒙了,以为VAO只是存放VBO索引值的地方

但通过总结其他教程,归纳出以下结论:

  1. VAO中存放着对的VBO句柄,即 glBindBuffer(GL_ARRAY_BUFFER, VBO) 函数绑定的是哪个具体的VBO

  2. VAO中存放着VBO的属性,即glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0) 中保存绑定好的VBO的属性属性(例如第五个参数是步长(Stride)即连续顶点属性组之间的间隔)

  3. VAO中存放着对glEnableVertexAttribArrayglDisableVertexAttribArray的调用,当VAO的值变成enable时,Vertex Shader才可以读取这些值


OpenGL中对VAO和VBO的理解的评论 (共 条)

分享到微博请遵守国家法律