您的位置:首页 > 编程语言 > VB

OpenGL VBO顶点缓冲的使用

2015-06-10 17:20 274 查看
转自w2001-OpenGL VBO顶点缓冲的使用

OpenGL VBO并不难,但是较繁琐,其实其概念跟加载纹理是一样的:

初始化阶段:



1. glGenBuffersARB(1, &nVBOVertices); //生成一个句柄

2. glBindBufferARB(GL_ARRAY_BUFFER_ARB, nVBOVertices); //声明该句柄为一个vbo句柄,并选择之

3. glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(vertices), vertices,GL_STATIC_DRAW); //将顶点集上传至server端

使用阶段:



1. glEnableClientState(GL_VERTEX_ARRAY); //开始使用vbo

2. glBindBufferARB(GL_ARRAY_BUFFER_ARB, nVBOVertices); //选择当前使用的vbo

3. glVertexPointer(3, GL_FLOAT, 0, BUFFER_OFFSET(0)); //指定vbo顶点格式

4. glDrawArrays( GL_TRIANGLES, 0, g_pMesh->m_nVertexCount ); //画吧

5. glDisableClientState(GL_VERTEX_ARRAY); //停止使用vbo



收尾阶段:



1. glDeleteBuffersARB(1,&nVBOVertices); //删除句柄,同时删除server端顶点缓冲



再来看看纹理缓冲是怎么使用的,其实差不多:

初始化阶段:



1. glGenTextures(1, &texID);//创建句柄

2. glBindTexture(GL_TEXTURE_2D, texID); //设置句柄类型

3. glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, img->GetWidth(), img->GetHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, raw_rgba); //上传纹理缓冲



使用阶段:



1. glEnable(GL_TEXTURE_2D); //开始使用纹理缓冲

2. glBindTexture(GL_TEXTURE_2D, texID); //选择当前使用的纹理缓冲

3. 发送顶点和纹理坐标,画吧…省略

4. glDisable(GL_TEXTURE_2D); //停止使用纹理



收尾阶段:



1. glDeleteTextures(1,&texID);//删除句柄,,同时删除server端缓冲



看到了么,这个概念是不是很相似?都是:

创建句柄

设置句柄类型

上传数据

开始使用缓冲

选择句柄

使用缓冲

停止使用缓冲

删除句柄和缓冲
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: