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端缓冲
看到了么,这个概念是不是很相似?都是:
1. 创建句柄
2. 设置句柄类型
3. 上传数据
4. 开始使用缓冲
5. 选择句柄
6. 使用缓冲
7. 停止使用缓冲
8. 删除句柄和缓冲
本文转载自:http://www.cppblog.com/w2001/archive/2008/05/10/49376.html
分享到:
相关推荐
想学习OpenGL VBO的同学不妨下载该资源,其中提供了使用OpenGL VBO绘制茶壶的实例程序(包含源码)。
一个使用opengl vbo 像素顶点缓存对象的例子
opengles之vbo顶点缓冲
提高了应用的FPS,提高程序的运行速度。把数据加载到显卡的高性能的显存里。大大降低了渲染时间
vbo 使用案例 使用与不使用vbo的区别 正方形 三角形 opengl的vbo实现 7个example 解决vbo使用中的一些问题 如何在opengl里面实现vbo技术的使用
opengl vbo 简单演示 这是一个vbp的小例子。简单的螺旋运动。
关于利用opengl和vbo是的环境配置
运用定点数组绘制的三维图像,必须包含glew文件,适合Opengl初学者
我们通过所谓的 **顶点缓冲对象 (VBO)**,可以在GPU的内存中存储大量的顶点。使用这些缓冲区对象的好处是,我们可以一次将大批数据全部发送到图形卡,如果还有足够的内存,则可以将其保存在此处,而不必一次发送一...
VBO是一种用于保存顶点数据到GPU高速缓存的机制。本程序对比了开启数组缓存和关闭数组缓存时的帧速率,证明了VBO技术可以改进实时渲染效率
C# opengl vao vbo ebo 结合GLSL 语言 渲染器实例 有备注有说明,看蓝宝书一头雾水的可以看下,代码为OPENGL 加VS2015
OPENGL VBO经典例子,初学者必看!
Android OpenGL ES 3.0中Vertex Buffer Object(VBO)和Vertex Array Object(VAO)的应用。
Qt版的OpenGLDemo,其中包含透视投影,纹理贴图,文字显示,反锯齿。
点云 使用 OpenGL 着色器 + VBO 处理大点云的演示代码
OpenGL工程,可用dev c++打开,利用VBO方法绘制水壶,空格键切换是否使用VBO,可以看出绘制数据与帧数的对比
这个是c++上课的课件。里面包含有glut,glew的头文件以及一些其他的环境配置文档。还有9个由浅入深的vbo实例,很有引导作用。
采用VBO技术的真正的多线程多窗口OpenGL程序 vs2008编译通过。
这些脚本与从七巧板导出的顶点缓冲对象(VBO)一起使用。 有关如何导出这些VBO的示例,请参见用法python [scriptname] [infile] [outfile] 用法示例python vbo_to_ply.py tile_verts tile_faces.ply 档案清单tile_...
VAO保存顶点属性、元素索引VBO指向数据缓冲区EBO指向索引缓冲区。