当前位置: 首页 > news >正文

OpenGL学习笔记-03-VBO/VAO

VBO

  • 全称:顶点缓冲对象(Vertex Buffer Object)
  • 本质:就是一个管理GPU显存的对象
  • 作用:用来管理在GPU上开辟的显存,这块显存通常用来存储顶点
  • 类比:一个装着你三角形顶点的箱子

VAO

  • 全称:顶点数组对象(Vertex Array Object)
  • 本质:就是一个“配置清单”,告诉GPU,现在用的是哪一段VBO,这一段VBO里的数据是怎么排布的
  • 作用:让我不用每画一个三角形,都要重新走一遍所有的绑定流程
  • 类比:箱子上的说明书

生活化的类比

概念类比解释
原始数据你要寄的一堆商品(衣服、书本、电子产品)CPU内存里的顶点数组
VBO你把这些商品统一装进一个快递大箱子,然后交给快递公司把数据从CPU上传到GPU显存
VAO你在箱子外贴一张发货清单:“第一件是衣服,第二件是书本,第三件是电子产品”告诉GPU“每3个数是一个顶点的位置,每2个数是纹理坐标”
glDrawArrays你对快递员说:“按这张清单处理1号到3号商品”命令GPU开始画
  • 如果没有VAO(说明书):每次画的时候,你都要重新跟GPU说一遍“位置在偏移0、颜色在偏移12、步长是32”——就像每次都要重新写发货清单,快递员会被搞疯。
  • 有了VAO:你提前把说明书写好,以后每次只需要说“按说明书A来处理”,快递员就知道怎么做了。

代码层面的示例

// 第一步:准备原始数据(你要寄的商品)floatvertices[]={// 位置 // 颜色-0.5f,-0.5f,1.0f,0.0f,0.0f,0.5f,-0.5f,0.0f,1.0f,0.0f,0.0f,0.5f,0.0f,0.0f,1.0f};// 第二步:创建VBO(把商品装箱,寄给GPU)unsignedintVBO;glGenBuffers(1,&VBO);// 申请一个快递箱子glBindBuffer(GL_ARRAY_BUFFER,VBO);// 打开这个箱子glBufferData(GL_ARRAY_BUFFER,sizeof(vertices),vertices,GL_STATIC_DRAW);// 把数据装进去// 第三步:创建VAO(写说明书,告诉GPU怎么读)unsignedintVAO;glGenVertexArrays(1,&VAO);// 申请一张说明书glBindVertexArray(VAO);// 开始写说明书// 说明书内容:位置数据在偏移0的位置,每5个数一组glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,5*sizeof(float),(void*)0);glEnableVertexAttribArray(0);// 说明书内容:颜色数据在偏移3个float的位置,每5个数一组glVertexAttribPointer(1,3,GL_FLOAT,GL_FALSE,5*sizeof(float),(void*)(3*sizeof(float)));glEnableVertexAttribArray(1);// 第四步:画图(快递员按说明书处理)glBindVertexArray(VAO);// 把说明书递给快递员glDrawArrays(GL_TRIANGLES,0,3);// 开始处理前3个顶点

两者的关系

  • VBO是必须的,VAO是可选的(但强烈建议使用)

    • 只有VBO,没有VAO:每次画之前都要调用glVertexAttribPointer重新配置一遍(麻烦,但能跑)
    • 有了VAO:配置一次,后面只需glBindVertexArray就能切换不同模型的数据格式
http://www.gsyq.cn/news/1590324.html

相关文章:

  • LeetCode 3737.统计主要元素子数组数目 I:枚举+计数
  • 基于SpringBoot的校园社团管理与发展态势分析系统
  • 快速搭建MQTT服务器:5步搞定
  • 2轴舵机控制板
  • 被需要的感觉,会上瘾
  • 为什么pandas读Excel日期列全是浮点数字?
  • 企业级AI落地实操指南:Copilot Studio与Azure AI Search深度集成
  • 想住阳朔遇龙河民宿?这几家凭啥成游客首选,速来揭秘!
  • go: Push Pull Pattern
  • T140 风扇噪音大 竟然电池原因
  • 第5篇:《DC-DC电感啸叫排查:饱和电流选小,满载电流波形畸变》
  • 激动的心颤抖的手 真的领到了8元
  • DCU深度技术报告_下篇_性能复盘与研发经验总结
  • PDFSlideshow使用教程,PDF转幻灯片演示工具绿色版下载
  • NannyML无标签模型监控:实现端到端MLOps性能闭环
  • 5分钟打造万能启动盘:Ventoy彻底告别重复格式化时代
  • P89LPC92x1中断与I/O配置实战:从原理到避坑指南
  • 2026命理软件付费前怎么看?八字排盘App要看使用频率和可替代成本
  • DonkeyCar存储系统深度解析:SD卡选型、ext4优化与路径陷阱
  • SaaS和低代码厂商的智能体转型路径:两场范式级转型的路线图
  • JSON Schema验证实际应用场景案例
  • HDFS javaAPI-windows的IDEA中java文件在linux中的hadoop平台运行
  • HTTPS 性能优化完全指南:从原理、硬件到架构的全链路调优实战
  • 【题解】WebGoC绘图题目精选整合集
  • OpenCloudOS Server 9 安装 Nginx 完整指南
  • 如何在老旧硬件上安装Windows 11:FlyOOBE完整技术指南与实战方案
  • 假面真贷:一场信贷伪冒申请的“全链路“围剿
  • 2026实测:高性价比AI编程工具替代方案全梳理
  • AI培训行业变化:必火AI与传统机构对比
  • 2026年车规芯片产业交流平台实力盘点:TOP5车规级半导体展会精选分析