Opengl ES IBO(索引缓冲区) VBO(顶点缓冲区)创建一个立方体
2015-07-21 10:14
447 查看
1 创建
2 渲染:
//立方体顶点属性 Vertex cubeVerticesIndexed[] = { { -1.0f,-1.0f, 1.0f, 0.0f,1.0f, 1.0f, 1.0f, 1.0f,1.0f }, // 0 { 1.0f,-1.0f, 1.0f, 0.0f,1.0f, 1.0f, 1.0f, 1.0f,1.0f }, // 1 { 1.0f, 1.0f, 1.0f, 1.0f,1.0f, 1.0f, 1.0f, 1.0f,1.0f }, // 2 { -1.0f, 1.0f, 1.0f, 1.0f,1.0f, 1.0f, 1.0f, 1.0f,1.0f }, // 3 { -1.0f,-1.0f,-1.0f, 0.0f,1.0f, 1.0f, 1.0f, 1.0f,1.0f }, // 4 { -1.0f, 1.0f,-1.0f, 1.0f,1.0f, 1.0f, 1.0f, 1.0f,1.0f }, // 5 { 1.0f, 1.0f,-1.0f, 1.0f,1.0f, 1.0f, 1.0f, 1.0f,1.0f }, // 6 { 1.0f,-1.0f,-1.0f, 1.0f,1.0f, 1.0f, 1.0f, 1.0f,1.0f }, // 7 }; //索引点 GLubyte indexBuf[] = { 0, 1, 2, 0, 2, 3, // Quad 0 4, 5, 6, 4, 6, 7, // Quad 1 5, 3, 2, 5, 2, 6, // Quad 2 4, 7, 1, 4, 1, 0, // Quad 3 7, 6, 2, 7, 2, 1, // Quad 4 4, 0, 3, 4, 3, 5 // Quad 5 }; unsigned _vbo; //创建顶点缓冲区 glGenBuffers(1,&_vbo); //制定vbo类型 glBindBuffer(GL_ARRAY_BUFFER,_vbo); //给vbo赋值glBufferData(GL_ARRAY_BUFFER,sizeof(cubeVerticesIndexed),cubeVerticesIndexed,GL_STATIC_DRAW); //恢复初始状态 glBindBuffer(GL_ARRAY_BUFFER,0); //创建ibo glGenBuffers(1,&_indexbo); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,_indexbo); glBufferData(GL_ELEMENT_ARRAY_BUFFER,sizeof(indexBuf),indexBuf,GL_STATIC_DRAW); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);
2 渲染:
//矩阵变换 CELL::matrix4 MVP = matProj * matView * matRot; //给一个纹理 glBindTexture(GL_TEXTURE_2D,_textureId); glBindBuffer(GL_ARRAY_BUFFER,_vbo); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,_indexbo); glUniformMatrix4fv(_shader._MVP, 1, false, MVP.data()); glVertexAttribPointer(_shader._positionAttr,3, GL_FLOAT, false, sizeof(Vertex),(void*)0); glVertexAttribPointer(_shader._uvAttr,2, GL_FLOAT, false, sizeof(Vertex),(void*)12); glVertexAttribPointer(_shader._colorAttr,4, GL_FLOAT, false, sizeof(Vertex),(void*)20); glDrawElements(GL_TRIANGLES,36,GL_UNSIGNED_BYTE,0); glBindBuffer(GL_ARRAY_BUFFER,0); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);
相关文章推荐
- 解决Vista系统OpenGL驱动问题的方法整理
- Delphi下OpenGL2d绘图之画四边形的方法
- Delphi下OpenGL2d绘图之画点的方法
- Delphi下OpenGL2d绘图之初始化流程详解
- SQL Server 数据页缓冲区的内存瓶颈分析
- Delphi使用OpenGL2d绘图之画图片Bmp的方法
- 通过OpenGL ES混合模式缩放视频缓冲区来适应显示尺寸
- VC运用OPENGL加载BMP纹理图的实现方法汇总
- PHP中对缓冲区的控制实现代码
- java实现OpenGL ES纹理映射的方法
- logcat命令使用方法和查看android系统日志缓冲区内容的方法
- Python StringIO模块实现在内存缓冲区中读写数据
- java基于OpenGL ES实现渲染实例
- OpenGL坐标系介绍
- linux下opengl的安装(with qt)
- OpenGL超级宝典笔记——显示列表
- OpenGL超级宝典笔记——顶点数组
- OpenGL生成轮廓
- OpenGL超级宝典笔记——性能比较
- linux 下tomcat安装apr运行模式优化并发性能