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

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

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


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

你可能感兴趣的:(缓冲区对象)