理解VAO与VBO的关系
2017-02-21 16:12
1096 查看
OpenGL抛弃glEnable(),glColor(),glVertex(),glEnable()这一套流程的函数和管线以后,就需要一种新的方法来传递数据到Graphics Card来渲染几何体,我们可以用VBO, 在3+版本我们可以使用Vertex Array Object-VAO,VAO是一个对象,其中包含一个或者更多的Vertex Buffer Objects。而VBO是Graphics Card中的一个内存缓冲区,用来保存顶点信息,颜色信息,法线信息,纹理坐标信息和索引信息等等。
VAO在Graphics Card线性的存储几个对象信息,替代了以前发送我们需要的数据到Graphics Card上,这也是Direct3D没有立即模式情况下工作的方法,这就意味着应用程序不需要传输数据到Graphics Card上而得到较高的性能。一个VAO有多个VBO,如下图所示:
VAO是一个容器,它将所有可以由glVertexAttribPointer和其它一些函数进行设置的状态包装到一起。在使用一个VAO时,所有通过一次glVertexAttribPointer调用来指定的状态都会被存储到当前的VAO中。它们之间也是通过上下文,只有唯一的激活VAO,在VAO后创建的VBO都属于该VAO。关联VBO数据用取得当前激活的缓存区对象偏移来指定。需要特别注意的是,在stackoverflow发现了这句话,如果你的VAO不能绘制出东西:
If you're on OpenGL-4 core, you need to create a VAO first, otherwise nothing will draw
VAO在Graphics Card线性的存储几个对象信息,替代了以前发送我们需要的数据到Graphics Card上,这也是Direct3D没有立即模式情况下工作的方法,这就意味着应用程序不需要传输数据到Graphics Card上而得到较高的性能。一个VAO有多个VBO,如下图所示:
VAO是一个容器,它将所有可以由glVertexAttribPointer和其它一些函数进行设置的状态包装到一起。在使用一个VAO时,所有通过一次glVertexAttribPointer调用来指定的状态都会被存储到当前的VAO中。它们之间也是通过上下文,只有唯一的激活VAO,在VAO后创建的VBO都属于该VAO。关联VBO数据用取得当前激活的缓存区对象偏移来指定。需要特别注意的是,在stackoverflow发现了这句话,如果你的VAO不能绘制出东西:
If you're on OpenGL-4 core, you need to create a VAO first, otherwise nothing will draw
相关文章推荐
- OpenGL学习笔记(八):进一步理解VAO、VBO和SHADER,并使用VAO、VBO和SHADER绘制一个三角形
- 对OpenGLES中VBO与VAO的理解
- OpenGL学习笔记(三):了解管线、VAO、VBO的关系,介绍Qt如何使用OpenGL
- 现代OGL Shader中VAO,VBO和GL_ELEMENT_ARRAY_BUFFER之间的关系
- GLSL(6)分别使用可编程渲染管线编程和固定渲染管线编程来画点(理解VAO&VBO)
- OpenGL ES Shader相关API 总结【5】——VBO与VAO的作用与关系
- android中SurfaceView SurfaceHolder SurfaceHolder.Callback 关系 理解
- 计算几何入门题之点,线,面,形基本关系以及点积叉积的理解
- 理解域信任关系
- VAO与VBO
- 用门的概念理解响应时间和吞吐量之间的关系
- 如何理解Nginx, WSGI, Flask之间的关系
- 深入理解 Laravel Eloquent(三)——模型间关系(关联)
- UML 六种关系的理解
- 理解MySQL及其他关系数据库中JOINs用法
- 学习web开发,理解HTML,XHTML,XML,CSS,JS等技术的关系后,眼界会更宽(pu...
- 深入理解 Laravel Eloquent(三)——模型间关系(关联)
- 理解SQLAlchemy的表继承关系(2)-Single Table Inheritance
- 充分理解HP Flex-10和VMware的端口映射关系
- 初步理解数据库锁和事务的关系