首页 > 数据库技术 > 详细

《高效学习OpenGL》之缓冲区对象 glGenBuffers(), glBindBuffer(), glBufferData(),glMapBuffer()

时间:2014-02-18 03:29:17      阅读:1098      评论:0      收藏:0      [点我收藏+]

1.创建缓冲区对象

void glGenBuffers(GLsizei n, GLuint *buffers);
//在buffers数组中返回当前n个未使用的名称,表示缓冲区对象
GLboolean glIsBuffer(GLuint buffer);
//判断是否是缓冲区对象

2.激活缓冲区对象

void glBindBuffer(GLenum target, GLuint buffer);
//指定当前活动缓冲区的对象

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

void glBufferData(GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
//target:可以是GL_ARRAY_BUFFER()(顶点数据)或GL_ELEMENT_ARRAY_BUFFER(索引数据)
//size:存储相关数据所需的内存容量
//data:用于初始化缓冲区对象,可以是一个指向客户区内存的指针,也可以是NULL
//usage:数据在分配之后如何进行读写,如GL_STREAM_READ,GL_STREAM_DRAW,GL_STREAM_COPY,如图
bubuko.com,布布扣


4.更新缓冲区数据值

GLvoid *glMapBuffer(GLenum target, GLenum access);
//提供对缓冲区对象包含的整个数据集合的更新
//access:GL_READ_ONLY,GL_WRITE_ONLY,GL_READ_WRITE

GLboolean *glUnMapBuffer(GLenum target);
//表示当前绑定缓冲区对象的更新已经完成,与glMapBuffer()结合使用

5.在缓冲区对象之间复制数据

void glCopyBufferSubData(GLenum readbuffer, GLenum writebuffer
							GLintptr readoffset, GLintptr writeoffset, GLsizeiptr size);
//把数据从readbuffer相关联的缓冲区对象复制到writebuffer的缓冲区对象
//从readoffset开始移动size个数据的数量到wirteoffset中

6.清除缓冲区对象

void glDeleteBuffers(GLsizei n, GLuint *buffers);



《高效学习OpenGL》之缓冲区对象 glGenBuffers(), glBindBuffer(), glBufferData(),glMapBuffer()

原文:http://blog.csdn.net/biggbang/article/details/19327167

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!