OpenGL中的VAO、VBO、EBO
QT+OpenGL基础:
- QT+OpenGL创建一个三角形并动态改变三角形颜色
- OpenGL中的VAO、VBO、EBO
- QT+OpenGL 使用VAO、VBO、EBO结合绘制一个正方形
- QT+OpenGL使用一组顶点绘制两个三角形
- QT+OpenGL通过两个VAO来管理两个三角形
- QT+Opengl使用两个Shader绘制两个不同颜色的三角形
- QT+OpenGL从顶点着色器传递颜色数据给片元着色器
- QT+OpenGL简单纹理贴图
- QT+OpenGL纹理与颜色混合
- Qt+OpenGL混合两个纹理,并可以改变纹理透明度
一、概述
目的:简单介绍一下VAO、VBO、EBO,使用他们能提高opengl的渲染效率
VAO:顶点数组对象(Vertex Array Object)
VAO就相当于一个管理者的角色,在GPU中创建一个VAO对象用于管理VBO、EBO。VBO和EBO创建绑定好后会自动挂到VAO下。
VBO:顶点缓冲对象(Vertex Buffer Object)
VBO顶点缓对象,在GPU中创建一个VBO对象,并在GPU中分配一块内存用于存储顶点数据。会一次性把顶点数据copy到GPU
EBO:元素缓冲对象/索引缓冲对象(Element Buffer Object)
EBO索引缓冲对象,在GPU创建一个EBO对象,并在GPU中分配索引缓冲区,用于把EBO定义的顶点索引copy到GPU。如果使用了EBO则绘制方法必须换成glDrawElement。
有了EBO,用户可以任意组合其所定义的顶点顺序。
二、代码示例
1.VAO使用
a.创建VAO
参数介绍:
第一个参数:代表创建几个VAO对象
第二个参数:创建的VAO的地址
glGenVertexArrays(1, &VAO);//创建VAO:顶点数组对象
b.绑定VAO
参数:上一步创建的VAO对象
//绑定VAO和VBO对象 glBindVertexArray(VAO);
c.删除VAO
glDeleteVertexArrays()
2.VBO使用
a.创建VBO
参数介绍:
第一个参数:创建多少个VBO
第二个参数:创建的具体的VBO
glGenBuffers(1, &VBO);//创建VBO:顶点数组缓冲
b.绑定VBO
参数介绍:
第一个参数:固定值,代表要创建一个数组缓冲区
第二个参数:上一步创建的VBO
glBindBuffer(GL_ARRAY_BUFFER, VBO);
c.给VBO分配内存
参数介绍:
第一个参数:固定值,要和上一步的对应起来
第二个参数:顶点数组总共占用多少个字节
第三个参数:要传给GPU的具体顶点数组的值
第四个参数:代表这个数组不经常变动
//把顶点数据放入缓冲区 glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
3.EBO的使用
1.创建EBO
参数介绍:
第一个参数:创建多少个EBO
第二个参数:创建的EBO对象
glGenBuffers(1, &EBO);//EBO元素索引缓冲,用来指定顶点应该如何排列和绘制
2.绑定EBO
第一个参数:固定值,代表要创建一个元素数组缓冲区
第二个参数:上一步创建的EBO
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, EBO);
3.给EBO分配缓冲区(内存)
参数介绍:
第一个参数:固定值,要和上一步的对应起来
第二个参数:顶点数组总共占用多少个字节
第三个参数:要传给GPU的具体索引缓冲的具体数据
第四个参数:代表这个数组不经常变动
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indices), indices, GL_STATIC_DRAW);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
2023-08-21 EventBus源码再分析
2013-08-21 Android 导入工程文件引用包出错