码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-10-31 18:44:33      阅读:516      评论:0      收藏:0      [点我收藏+]

标签:缓冲区对象

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);

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


本文出自 “每天进步一点点” 博客,转载请与作者联系!

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

标签:缓冲区对象

原文地址:http://568464209.blog.51cto.com/7726521/1708324

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!