VBO:Vertex Buffer Object,顶点缓冲对象。
可以存储大量顶点,因而我们可以利用VBO一次性发送一大批数据到显卡上。

VAO:Vertex Array Object,顶点数组对象。
一个VAO,配置并告诉了我们该如何使用VBO(包括如何解读VBO中的数据),以及使用哪个VBO。

一般顺序:

声明VBO、VAO

unsigned int cubeVAO = 0;
unsigned int cubeVBO = 0;

先生成VAO再生成VBO

glGenVertexArrays(1, &cubeVAO);
glGenBuffers(1, &cubeVBO);

填充VBO

glBindBuffer(GL_ARRAY_BUFFER, cubeVBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);vertices是顶点数组

连接顶点数组VAO

 glBindVertexArray(cubeVAO);

数据

glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(float), (void*)0);

OpenGL中的VAO和VBO使用技巧相关推荐

  1. 【OpenGL】理解VAO、VBO、EBO和 shader中vertex、fragment交互。

    1:首先了解GPU和渲染管道工作原理. 2:解释VAO.VBO.EBO 顶点数组对象:Vertex Array Object,VAO 顶点缓冲对象:Vertex Buffer Object,VBO 元 ...

  2. OpenGL - 如何理解 VAO 与 VBO 之间的关系

    系列文章目录 LearnOpenGL 笔记 - 入门 01 OpenGL LearnOpenGL 笔记 - 入门 02 创建窗口 LearnOpenGL 笔记 - 入门 03 你好,窗口 LearnO ...

  3. OpenGL开发关于VAO和VBO的理解

    文章目录 OpenGL渲染时涉及到的数据传输 上述流程中涉及到的内存 一.VBO的相关API调用 二.渲染vbo内存中的数据需要调用的API 三.VAO的相关调用的API 四.VBO和VAO的解绑 O ...

  4. CSharpGL(7)对VAO和VBO的封装

    CSharpGL(7)对VAO和VBO的封装 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码中包含10多个独立的Demo,更适合入门参考 ...

  5. 详解Opengl中VBO和VAO

    详解Opengl的VBO和VAO 前言 什么是VBO 如何创建VBO 什么VAO 如何执行VAO 总结 前言 对于Opengl中的VBO和VAO相信很多人都熟悉这2个名字,但是有时候缺容易混淆2个概念 ...

  6. 【Opengl】 VAO与VBO的关系

    转载 这里 目录 一.VBO的作用 二.VAO的作用 三.一个VAO和多个VBO 注: VAO和VBO都是用来存储顶点信息的,并把这些信息送入顶点着色器.至于什么是顶点和顶点着色器,这里就不多说了,不 ...

  7. QT OpenGL(一 VAO、VBO、EBO使用)

    1.什么是OpenGL? Open Graphics Library,它是一个由Khronos组织制定并维护的规范 OpenGL核心是一个C库,同时也支持多种语言的派生 核心模式 也叫可编程管线,提供 ...

  8. Android OpenGL ES 学习(六) – 使用 VBO、VAO 和 EBO/IBO 优化程序

    OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...

  9. 【图像】【OpenGL】VAO和VBO的关系

    目录 一.VBO的作用 二.VAO的作用 三.一个VAO和多个VBO 注: VAO和VBO都是用来存储顶点信息的,并把这些信息送入顶点着色器.至于什么是顶点和顶点着色器,这里就不多说了,不了解的读者可 ...

最新文章

  1. 微软sccm服务器,System Center 2012R2系列之SCCM部署
  2. spring boot单元测试
  3. DCMTK:将XML文档的内容转换为DICOM结构的报告文件
  4. Win10系统修改MAC地址
  5. vb.net利用SerialPort进行读取串口操作
  6. ubuntu16.04安装java环境
  7. java 点到点最短路径,迪杰斯特拉算法处理无向图中最短路径的(dijkstra)Java实现(指定两点,求最短距离及路径) | 学步园...
  8. python集合中的元素不能是哪些数据类型_Python内置类型及常见问题
  9. nginx 日志格式设置 和 负载均衡下 获取真实ip
  10. [转载]JUnit3 与 JUnit4 的区别
  11. Vi编辑器常用命令及三种模式转换
  12. Python实现Excel随机抽取数
  13. 计算机c盘中哪些东西能删除吗,电脑c盘哪些文件可以删除,教您c盘里哪些文件可以删除...
  14. 三维模型的泰森多面体离散
  15. HDwiki 源代码 - 互动百科开源
  16. 计组复习-cache
  17. 关于安卓系统4.0/5.0/6.0获取单卡手机,双卡手机的imei1,imei2,meid(用反射来实现,史上最详细,最全面获取)--binbinyang
  18. Manjaro手动调节屏幕亮度
  19. JAVA梅森旋转随机算法_梅森旋转算法
  20. linux账户密码介绍

热门文章

  1. Java 运算符 和 运算符
  2. Swift 中 insetBy(dx: CGFloat, dy: CGFloat) - CGRect 用法详解
  3. Linux服务器搭建常用环境(一)
  4. SharePoint使用BCS开发你第一个应用程序(三)
  5. 一些有用的webservice
  6. 数论(一)——素数,GCD,LCM
  7. 递归与非递归转换(栈知识应用)
  8. android源代码 abi,Android内核源码Abi目录学习笔记
  9. hadoop集群_Ambari搭建hadoop集群
  10. java 枚举的继承_java中枚举类可以被继承吗?