初识OpenGL (-)VAO顶点数组对象
1. VAO顶点数组对象(Vertex Array Object)
可以像顶点缓冲对象那样被绑定,任何随后的顶点属性调用都会储存在VAO中。
好处:当配置顶点属性指针时,你只需要将那些调用执行一次,之后再绘制物体的时候只需要绑定相应的VAO。这使在不同顶点数据和属性配置之间切换变得非常简单,只需要绑定不同的VAO就行了。刚刚设置的所有状态都将存储在VAO中。
OpenGL的通过VAO知道如何处理顶点输入。如果我们绑定VAO失败,OpenGL会拒绝绘制任何东西。
1.1 储存内容
1.2 使用过程
glEnableVertexAttribArray和glDisableVertexAttribArray的调用。
通过glVertexAttribPointer设置的顶点属性配置。
通过glVertexAttribPointer调用与顶点属性关联的顶点缓冲对象。
定义一个储存了顶点属性配置和应使用的VBO的顶点数组对象。生成/配置所有的VAO(和必须的VBO及属性指针),然后储存它们供后面使用。当我们打算绘制物体的时候就拿出相应的VAO,绑定它,绘制完物体后,再解绑VAO。
step1. 创建一个VAO
unsigned int VAO;
glGenVertexArrays(1, &VAO);
step2. 使用VAO
使用glBindVertexArray绑定VAO。
step3. 绑定和配置对应的VBO和属性指针,之后解绑VAO供之后使用。
step4. 代码
// ..:: 初始化代码(只运行一次 (除非你的物体频繁改变)) :: ..
// 1. 绑定VAO
glBindVertexArray(VAO);
// 2. 把顶点数组复制到缓冲中供OpenGL使用
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
// 3. 设置顶点属性指针
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0);
glEnableVertexAttribArray(0);[...]// ..:: 绘制代码(渲染循环中) :: ..
// 4. 绘制物体
glUseProgram(shaderProgram);
glBindVertexArray(VAO); //绘制三角形
glDrawArrays(GL_TRIANGLES, 0, 3);
初识OpenGL (-)VAO顶点数组对象相关推荐
- WebGL 2.0实现Vertex Array Objects(VAO,顶点数组对象)
在WebGL 2.0中,终于把VAO转正了.在WebGL 1.0中,可以通过拓展实现.Babylon.js引擎默认情况下,每次渲染都使用VAO完成.简单介绍下VAO,下面截取自<OpenGLES ...
- 《OpenGL ES 3.x游戏开发(下卷)》一1.2 顶点数组对象
本节书摘来异步社区<OpenGL ES 3.x游戏开发(下卷)>一书中的第1章,第1.2节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- openGL 入门 2--顶点数组对象 VAO 和 缓存对象 VBO
用户输入的数据 以 顶点数组对象表示 Vertex Array Object,VAO void glGenVertexArrays(GLsizei n, GLuint *arrays); 返回 n个 ...
- android平台下OpenGL ES 3.0实例详解顶点属性、顶点数组
OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...
- [OpenGL] VAO、VBO、EBO
一.BO(Buffer Object,缓冲对象) 缓冲对象是OpenGL管理的一段内存,为了与我们CPU的内存区分开,一般称OpenGL管理的内存为:显存. 显存,也就是显卡里的内存.显卡访问显存比较 ...
- OpenGL VAO与VBO
绘画三角形: glDrawArray(GL_TRIANGLES, 0, 3);//从第0个点开始取,取三个 标准化设备坐标(Nomalized Device Coordinates,NDC): 顶点着 ...
- 深入理解:顶点缓存对象(VBO)
深入理解:顶点缓存对象(VBO) 顶点缓存对象(VBO) 深入理解:顶点缓存对象(VBO) 前言 一.创建VBO 二.绘制VBO 更新VBO 实例 源码下载 引用 前言 GL_ARB_vertex_b ...
- OPenGL中的缓冲区对象
引自:http://blog.csdn.net/mzyang272/article/details/7655464 在许多OpenGL操作中,我们都向OpenGL发送一大块数据,例如向它传递需要处理的 ...
- OpenGL VAO VBO EBO(IBO)的绑定、解绑问题
文章目录 前言 VBO 链接顶点属性 EBO(IBO) VAO 绑定顺序 解绑顺序 前言 首先感谢知乎的一篇文章,解答了我的疑惑,在此记录一下心得. 那么我们先简单介绍一下这三个对象,以及一些必要操作 ...
最新文章
- 【LibreOJ】#6299. 「CodePlus 2018 3 月赛」白金元首与克劳德斯
- oracle 状态unknown,解决Oracle crs_stat状态为UNKNOWN有关问题
- 使用squid配置透明代理并对上网行为进行控制
- 【模型开发】EDA探索性分析
- 数据结构:平衡二叉树概念、旋转
- matplotlib 中文显示 的问题
- Visual Studio2012打开时弹出“遇到异常:这可能是由某个扩展导致的”错误的解决办法...
- 使用 nohup 设置后台进程
- 2017-3-23校内训练
- 【二叉树】剑指offer:二叉树中序遍历的下一个节点
- RHEL 5.1 下面安装tftp服务
- FastDFS原理概括
- js打开新页面与关闭当前页面
- Android如何计算时间差
- 苏州大学计算机考研 复试机试真题2013-2020真题及Python题解
- 成都蚂蚁金服java_成都蚂蚁金服暑期实习Java后台开发面经(已收到OC)
- H5 img标签图片无法显示 -- 解决方案
- Linux使用ASF云挂卡(挂游戏时长)
- 实例011阳阳买苹果
- Linux中正则表达式详细命令及代码(附实验笔记)
热门文章
- 交换机千兆和百兆对网速影响_百兆路由器接千兆交换机,那么局域网网速可以达千兆吗?...
- 多人在线编辑文档 开发_字节跳动全资收购 “幕布”,与腾讯阿里竞逐在线文档市场...
- suid提权(linux)
- uniapp小程序实现弹幕功能
- 比360都好用的删除文件方式
- micropython视频_零基础如何优雅入门“网红”Python?小白必看的MicroPython视频合集:从入门到精通!...
- web前端主要技术概述
- 华为荣耀20和x10比较_华为畅享20pro和荣耀x10哪个好 有对比才能更好地选择
- Theshy 能否与 Faker 并肩,他是重要的影响因素之一
- 手机摄影入门(一) 放下“无单反不摄影”的观念