OpenGL中VAO、VBO和EBO的区别

1. VBO(Vertex Buffer Object)顶点缓冲区对象

	VBO为顶点缓冲区对象,是显卡存储空间里的一块缓存区(Buffer),用于存储顶点坐标/顶点uv/顶点法线/顶点颜色等数据信息。

2. VAO(Vertex Array Object)顶点数组对象

	VAO是所有顶点数据的状态集合。它存储了顶点数据的格式以及顶点数据所需的缓存对象的引用,任何随后的顶性调用都会储存在这个VAO中。

3. EBO(Element Buffer Object)索引缓冲对象

	和顶点缓冲对象一样,EBO也是一个缓冲,它专门储存索引,OpenGL调用这些顶点的索引来决定该绘制哪个顶点。

4. 三者联系与区别

	VAO中存储着VBO的信息和EBO的信息,VBO和EBO存储的都是顶点的信息。一个VAO对应一个物体,一个VBO对应一个物品的所有属性
(顶点坐标、颜色等,除顶点索引外),而一个EBO仅对应一个物品的一种属性(顶点索引属性)。附图说明。

在这里插入图片描述

	VAO1为物体1,有15个attribute pointer(属性调用指针,15意味着这个物体有15个顶点)。物体1的顶点坐标属性缓存在VBO1中,
而顶点索引属性缓存在EBO1中(其调用由element buffer object保存)。顶点0的坐标属性对应pos[0],
而pos[0]的调用由attribute pointer0保存。
	VAO2为物体2,也有15个attribute pointer。物体2的顶点坐标、颜色属性缓存在VBO2,而顶点索引属性缓存在EBO2中。
顶点0的坐标属性对应pos[0],颜色属性对应col[0]。stride为同样属性之间的间隔。
	正确的绑定顺序是VAO、VBO、EBO,将后两者的信息也绑定进VAO中去。

在这里插入图片描述

	如果不使用VAO的话,那么在每次渲染时都要设置第4步(即设定顶点属性指针)。而用了VAO,就只需要在第一次渲染开始时绑定VAO即可,
大大减少了代码量。

参考:

几张图看明白VAO、VBO、EBO的关系和代码顺序

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值