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

VAO与VBO的相关操作

在OpenGL的学习中了解到了VAO与VBO的概念

什么是VBO

VBO是OpenGL指令告诉GPU在其显存中开辟一块指定大小的内存区间,其中存储片元的顶点数据等

//制作一个vbo,存放三角形的位置与颜色信息
//顶点数据
float ver[]={
-0.5f,-0.5f,0.0f,1.0f,0.0f,0.0f,
0.5f,-0.5f,0.0f,0.0f,1.0f,0.0f,
0.0f,0.5f,0.0f,0.0f,0.0f,1.0f
};GLuint vbo;//创建一个VBO,这时候没有实装
glGenBuffers(1,&vbo);
glBindBuffer(GL_ARRAY_BUFFER,vbo);//把这个vbo绑定到状态机上的vbo接口
//下面这一步才算实装,填入vbo数据(接口,大小,数据,数据使用方式)
glBufferData(GL_ARRAY_BUFFER,sizeof(ver),ver,GL_STATIC_DRAW);

什么是vao

vao是与vbo搭配使用的,他存放的是vbo的描述信息,比如上述的ver数组,我不说你知道他是什么吗,他有三排数据,每一排是一个顶点,前三个是float类型的坐标xyz,后面三个是颜色数据rgb,数据有的都是相对坐标,我记得是有个官方的名字叫什么系统坐标还是什么,忘了不重要,本质就是相对坐标系,xy的范围都是(-1,1),原点在屏幕中心,相对于屏幕的比例,这就是描述信息,告诉GPU怎么用这些数据,存在vao中

//创建绑定vao
GLuint vao =0;
glGenVertexArrays(1,&vao);
glBindVertexArray(vao);//绑定vbo,接下来设置的属性与这个buffer有关
glBindBuffer(GL_ARRAY_BUFFER,vbo);
//位置属性放在vao的0号位置,要先激活
glEnableVertexArray(0);
//位置属性放在0号位置,一个属性三个位置,属性数字是float,非归一化,步长(一个点有6个数据),顶点数据内部偏移
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE,6*sizeof(float),(void*)0);//颜色数据放在vao的1号位置,要先激活
glEnableVertexArray(0);
glVertexAttribPointer(1,3,GL_FLOAT,GL_FALSE,6*sizeof(float),(void*)(3*sizeof(float)));

数据内偏移量这里注意一下,指针每次都值指向点数据的头部位置,如果数据是混用在一块的要设置

最后可以加一句解除vao绑定

glBindVertexArray(0);

还只算了解,有什么不对的地方欢迎指正

相关文章:

  • Hive数据倾斜 常见解决办法
  • DeepSeek V3 训练策略:FP8混合精度与多Token预测
  • Python 常用内置函数详解(八):对象属性操作getattr()、setattr()、delattr()、hasattr()、vars()函数详解
  • ​基于51单片机的数字温度计—可显示负数
  • esp32cam开发板的引脚使用和测试
  • 《跨越边界:探索跨端框架中通用状态管理方案设计》
  • 数据库Mysql_约束
  • 响应式布局,在飞帆平台中如此简单
  • 红利底波是什么意思?
  • LegalOne:本土与国际视野融合的法律评级,大湾区律师及律师事务所榜单申报启动
  • 使用CubeMX新建DMA工程——存储器到外设模式
  • 梳理顶会论文相关的经验贴
  • L3-040 人生就像一场旅行
  • 目标文件的段结构及核心组件详解
  • C++/SDL 进阶游戏开发 —— 双人塔防(代号:村庄保卫战 17)
  • 【Shell 脚本编程】详细指南:第三章 - 运算符与条件判断
  • PostgreSQL:pgAdmin 4 使用教程
  • tiktok web X-Bogus X-Gnarly 分析
  • 【dify—8】Agent实战——占星师
  • L3-041 影响力
  • 全国铁路昨日发送2311.9万人次,同比增长11.7%创历史新高
  • 乘客被困停滞车厢超4小时,哈尔滨铁路局客服:列车晚点,表示歉意
  • 微软上财季净利增长18%:云业务增速环比提高,业绩指引高于预期
  • 扬州市中医院“药膳面包”走红,内含党参、黄芪等中药材
  • 小核酸药物企业瑞博生物递表港交所,去年亏损2.81亿元
  • 共绘“彩色上海”,IP SH艺术共创沙龙首期圆满举办