glGenBuffers与glBindBuffer理解

news/2024/11/16 13:53:42/

1.glGenBuffers 官方解释:generate buffer object names

unsigned int VBO;
glGenBuffers(1, &VBO);

void glGenBuffers(GLsizei n,GLuint * buffers);

第一个参数是要生成的缓冲对象的数量,第二个是要输入用来存储缓冲对象名称的数组,

该函数会在buffers里返回n个缓冲对象的名称。

一言以蔽之:将n个当前未使用的缓冲对象名称(也就是ID),保存到buffers所指的内存区域中。

当然也可以声明一个unsigned int 数组,那么创建的n个缓冲对象的ID会依次保存在数组里。

unsigned int VBO[3];
glGenBuffers(3,VBO);

 也就是说,这时候VBO内会是一个从未被使用过的缓冲对象的ID,类似于给缓冲区起名字,起了一个独一无二名字。

注意:glGenBuffers()函数仅仅是生成一个缓冲对象的名称,这个缓冲对象并不具备任何意义,它是个没有类型的缓冲对象,它类似于C语言中的一个指针变量,我们可以分配内存对象并且用它的名称来引用这个内存对象。OpenGL有很多缓冲对象类型,那么这个缓冲对象到底是什么类型,就要用到下面的glBindBuffer()函数了。

2.glBindBuffer 官方解释:bind a named buffer object

void glBindBuffer(GLenum target,GLuint buffer);

参数:

target:缓冲对象的类型,可以为GL_ARRAY_BUFFER或GL_ELEMENT_ARRAY_BUFFER。buffer:指定缓冲区对象的名称(ID),也就是我们用glGenBuffers 生成的名称。

glBindBuffer函数完成了三项工作:
1、如果是第一次绑定buffer,且buffer是一个非0的unsigned int。那么将创建一个新的target类型的缓冲对象,并命名为buffer,或者说buffer指向这个缓冲对象。
2、如果buffer是一个已经创建的缓冲对象,那么它将成为当前被激活的target类型的缓冲对象。
3、如果buffer为0,那么OpenGL将不再对当前target应用任何缓冲对象。

OpenGL允许我们同时绑定多个缓冲类型,只要这些缓冲类型是不同的,换句话说,同一时间,不能绑定两个相同类型的缓冲对象

glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);


http://www.ppmy.cn/news/146786.html

相关文章

Vue实现订单确认界面禁止浏览器返回操作导致重复提交订单的问题

哈喽 大家好啊 最近遇到一个问题,就是在提交订单成功后的页面,然后用户去浏览器返回,就导致又提交了一次 然后就想到了如果提交成功页面,就阻止浏览器返回操作 主要实现如下: 1.在mounted的钩子函数: 2.…

Flask知识点2

1、flash() get_flashed_messages() : 用来消耗flash方法中存储的消息 使用flash存储消息时,需要设置SECRET_KEY flash 内部消息存储依赖了session 2、CSRF(Cross Site Request Forgery) 跨站请求伪造,指攻击者盗用你的身份发送恶意请求 CSRFProt…

大文件分片上传与下载

gitee地址:OPEN-文件上传下载大文件断点续传漂亮的前端页面: 基于Springboot2.x的文件上传下载经典案例,文件上传下载大文件断点续传、秒传漂亮的前端页面 大文件上传/下载_大文件上传下载_前端阿彬的博客-CSDN博客 主要靠前端进行分片上传&#xff…

像写 Rust 一样写 Python!

几年前,开始使用Rust编程,它逐渐改变了我使用其他编程语言(尤其是Python)设计程序的方式。在我开始使用Rust之前,我通常以一种非常动态和类型松散的方式编写Python代码,没有类型提示,到处传递和…

鸿蒙系统导航仪,华为鸿蒙os2.0系统支持的手机型号,华为鸿蒙系统官方下载入口...

最近华为最新的公布会上已经上线了最新的华为鸿蒙os2.0系统,现在照样处于内测的阶段,人人若是想要感受全新的玩机体验,那么就可以来这里申请公测哦,不外需要适配专门的机型,人人可以来看一下自己是否匹配。 华为鸿蒙os…

嵌入式linux汽车仪表,基于ARM和嵌入式Linux的汽车仪表盘研制

摘要: 汽车仪表是驾驶员获取汽车状态信息的关键设备,对汽车的安全行驶起着重要的作用。近年来,随着计算机、微电子和各种现场总线通信技术的广泛应用,汽车电子技术得到了迅猛的发展,汽车仪表盘上显示的信息不断增加,传统的机械式、电气式组合仪表越来越无法满足使用…

御用导航提示页面_终实现微信位置发送到汽车导航 越用越好用

我们使用微信,其中一个非常好用的功能就是发送位置。在朋友聚会或者去朋友家做客时,只需朋友发送一个微信用微信位置,我们就非常清楚的得知目的地,直接把这个位置推送给手机里的导航软件,并发起导航。 然而对于习惯使用中控屏导航的车友来说,这个过程脱节了。微信位置只能…

应用导航通用术语珍藏版

本文简单介绍卫星导航技术中,与通用导航相关的专业术语。 欢迎点击浏览更多高清视频演示 目录 1,in-vehicle GPS navigation system2,map database for navigation3,digital map4,TTFF5,route calculate6&…