温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

opengl学习笔记——缓冲区对象

发布时间:2020-08-01 19:25:03 来源:网络 阅读:970 作者:蚂蚁雄心 栏目:开发技术

1、创建缓冲区对象标示符

glGenBuffers(GLsizei n , GLuint * buffers),

生成n个当前未使用的缓冲区对象标示符(注意是标示符,不是缓冲区对象,缓冲区对象(即以下的target)包括GL_ARRAY_BUFFER(顶点数据),GL_ELEMENT_ARRAY_BUFFER(表示索引数据),GL_PIXEL_UNPACK_BUFFER(表示传递给Opengl的像素数据),GL_PIXEL_PACK_BUFFER(表示从opengl获取的像素数据),GL_COPY_READ_BUFFER和GL_COPY_WRITE_BUFFER(表示在缓冲区之间复制数据),GL_TEXTURE_BUFFER(作为纹理缓冲区存储的纹理数据)、GL_TRANSFORM_FEEDBACK_BUFFER(表示执行一个变换反馈着色器的结果)、或者GL_UNIFORM_BUFFER(表示统一变量值))。

2、创建激活缓冲区对象

glBindBuffer(GLenum target,GLuint buffer)

完成以下三个任务之一:1、当buffer时一个首次使用的非零无符号整数时,他就创建一个新的缓冲区对象,并把buffer分配给这个缓冲区对象;2、当绑定到一个以前创建的缓冲区对象时,这个缓冲区对象变成为活动的缓冲区对象;3当绑定到一个值为0的buffer时,opengl就会停止缓冲区对象。

3、数据分配和初始化缓冲区对象

glBufferData(GLenum target, GLSizeiptr size,const GLvoid *data, GLenum usage);

target代表缓冲区对象;size缓冲区大小,data用于初始化缓冲区对象,若为null则保留size个单位的空间内存,但不会对他进行初始化,usage代表读取写入方式

4、更新缓冲区对象的数据

glBufferSubData(GLenum target, GLintptr offset,GLsizeiptr size, const GLvoid* data)

代表用data指向的数据更新域target相关联的当前绑定缓冲区对象中从offset开始的size个字节数据。

GLvoid* glMapBuffer(GLenum target,GLenum access)

返回指向与target相关联的当前绑定缓冲区对象的数据存储,在完成数据的存储访问后,调用glUnmapBuffer(GLenum target)取消缓冲区映射。

5、清除缓冲区对象

void glDeleteBuffers(GLsizei n,const GLuint * buffers);

完成对缓冲区对象的操作后,可以释放它的资源,并使它的标示符可以由其他缓冲区对象使用。


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI