VAO VBO EBO RBO FBO PBO TBO UBO

转载:OpenGL图形渲染管线、VBO、VAO、EBO概念及用例

转载:VBO,PBO,FBO以及各种OpenGL入门,球体绘制等(英文)

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

转载:OpenGL缓冲区对象之VAO

VAO简单理解其实代表的就是模型的数据,用来管理VBO或EBO,如果需要很多个模型,就需要有个id来区分,所以创建vao的时候会返回一个vaoID。VAO中有一个属性列表,默认有16个属性(0 - 15),我们可以为属性指定数据,其中属性可以是顶点位置,颜色,法线,纹理坐标等等我们需要的数据,其中的每一个属性对应的数据其实就是VBO

2. VBO(Vertex Buffer Objects)顶点缓冲对象

顶点缓冲对象VBO是在显卡存储空间中开辟出的一块内存缓存区,用于存储顶点的各类属性信息,如顶点坐标,顶点法向量,顶点颜色数据等。在渲染时,可以直接从VBO中取出顶点的各类属性数据,由于VBO在显存而不是在内存中,不需要从CPU传输数据,处理效率更高。一组顶点是一个VBO,但是这一组顶点可以有多种拓扑关系,通过EBO来体现,因此同一组顶点可以绘制多个最基本图元。

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

图元索引缓冲区对象是为了解决同一个顶点多次重复调用的问题,可以减少内存空间浪费,提高执行效率。当需要使用重复的顶点时,通过顶点的位置索引来调用顶点,而不是对重复的顶点信息重复记录,重复调用。EBO中存储的内容就是顶点位置的索引indices,EBO跟VBO类似,也是在显存中的一块内存缓冲器,只不过EBO保存的是顶点的索引。

4. FBO(Frame Buffer Object):帧缓冲对象

转载:OpenGL ES 帧缓冲对象(FBO):Render to texture

在绘制每一帧图像时,先将图像绘制到FBO中,然后再用该纹理绘制到屏幕上,会看到结果和没有使用FBO效果一样。而实际上在使用FBO时只是绘制了一个矩形而已,好处是我们拿到了屏幕上要显示的物体的所有数据,想要对其进行其他额外的操作就方便多了。

使用FBO可以以一个纹理图像的方式访问已渲染场景中的每个像素

注意:如果帧缓冲中需要使用深度测试,需要使用RBO,在默认FBO中应该使用glDisable(GL_DEPTH_TEST);,自定义FBO正常开启深度测试就可以。

个人理解:自定义FBO就是将图像画到一个画布上,然后在默认的FBO上以纹理的方式加载自定义的FBO

5. RBO(Render Buffer Object)渲染缓冲区对象

是在纹理之后引入到OpenGL中,作为一个可用的帧缓冲附件类型的,所以在过去纹理是唯一可用的附件。和纹理图像一样,渲染缓冲对象是一个真正的缓冲,即一系列的字节、整数、像素等。渲染缓冲对象附加的好处是,它会将数据储存为OpenGL原生的渲染格式,它是为离屏渲染到帧缓冲优化过的。

6. PBO(Pixel Buffer Object)像素缓冲对象

PBO与VBO扩展类似,只不过它存储的是像素数据而不是顶点数据,使用PBO的好处是快速的像素数据传递。

7. UBO(Uniform Buffer Object)Uniform缓冲区对象

8. TBO(Texture Buffer Object)纹理缓冲区对象

转载:熟悉 OpenGL VAO、VBO、FBO、PBO 等对象

原文链接: https://www.cnblogs.com/mmmmmmmmm/p/15098600.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    VAO VBO EBO RBO FBO PBO TBO UBO

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/404105

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月24日 下午6:42
下一篇 2023年4月24日 下午6:42

相关推荐