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);
完成对缓冲区对象的操作后,可以释放它的资源,并使它的标示符可以由其他缓冲区对象使用。