顶点缓冲区VBO和索引缓冲区IBO的结合使用
来源:互联网 发布:寻侠肉身突破数据 编辑:程序博客网 时间:2024/05/22 08:25
virtual void onInit(){//清空窗口为黑色glClearColor(0,0,0,1);//设置视口的位置和大小--尝试改变视口的位置和大小glViewport(0,0,(GLint)_winWidth,(GLint)_winHeight);//创建VBO-顶点缓冲区glGenBuffers(1, &_vertexId);//若创建多个,第二个参数应该是数组//绑定并指定buffer类型为VBOglBindBuffer(GL_ARRAY_BUFFER,_vertexId);float x = 100;float y = 100;float w = 100;float h = 100;CELL::float2 pos[] ={CELL::float2(x, y),CELL::float2(x + w, y),CELL::float2(x + w, y + h),CELL::float2(y, y + h),};//将内存中的顶点数据传送进显存glBufferData(GL_ARRAY_BUFFER,sizeof(pos),pos,GL_STATIC_DRAW);//切换状态glBindBuffer(GL_ARRAY_BUFFER, 0);//创建索引缓冲区glGenBuffers(1, &_indexId);glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,_indexId);//指定顶点索引unsigned short arIndex[] ={0, 1, 2, 3, 0};//数据传递到显卡glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(arIndex), arIndex, GL_STATIC_DRAW);//切换状态glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,0);}
渲染
virtual void render(){//清除深度缓冲和颜色缓冲glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);//指定视口大小glViewport(0,0,_winWidth,_winHeight);//创建一个投影矩阵CELL::matrix4 screenProj = CELL::ortho<float>(0, float(_winWidth), float(_winHeight), 0, -100.0f, 100);glBindBuffer(GL_ARRAY_BUFFER,_vertexId);_shader.begin();//启用顶点相关属性{glUniformMatrix4fv(_shader._MVP,1,false,screenProj.data());glUniform4f(_shader._color,1,0,0,1);glVertexAttribPointer(_shader._position, 2, GL_FLOAT, false, sizeof(CELL::float2), 0);unsigned short arIndex[] ={0, 1, 2, 3, 0};glDrawElements(GL_LINE_STRIP,5,GL_UNSIGNED_SHORT,arIndex);}_shader.end();//关闭顶点相关属性glBindBuffer(GL_ARRAY_BUFFER,0);eglSwapBuffers(_display,_surface);}
阅读全文
0 0
- 顶点缓冲区VBO和索引缓冲区IBO的结合使用
- Opengl ES IBO(索引缓冲区) VBO(顶点缓冲区)创建一个立方体
- opengles中VBO和IBO结合使用
- OpenGL ES 3.0 顶点缓冲区VBO使用
- opengles中使用vbo(顶点缓冲区)
- OpenGL顶点缓冲区对象(VBO)
- GLES 顶点缓冲区对象(VBO)
- OpenGL顶点缓冲区对象(VBO)
- OpenGLShader 编程系列 - 顶点缓冲区的使用
- OpenGL ES 学习教程(五) 极速绘制,使用 VBO (顶点缓冲区对象)!
- OpenGL系列教程之八:OpenGL顶点缓冲区对象(VBO)
- OpenGL系列教程之八:OpenGL顶点缓冲区对象(VBO)
- 缓冲区对象VBO
- vbo和fbo的结合使用
- 索引顶点的VBO与多重纹理下的VBO
- 【OpenGL ES】顶点缓冲区对象VBO与顶点数组对象VAO
- 使用OpenGL和GLUT,结合双缓冲区生成动画
- 使用OpenGL和GLUT,结合双缓冲区生成动画
- android事件分发机制解析
- js的事件捕获和事件冒泡学习心得
- 【学习必看】PHP学习路线图
- mysql select ....for update排他锁
- 请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。
- 顶点缓冲区VBO和索引缓冲区IBO的结合使用
- codevs 1380 没有上司的舞会 DP 解题报告
- mybatis传入参数注意内容
- Qt游戏编程——飞机大战
- 日常维护SQL以及脚本
- python selenium 3.4 错误解决 Message: 'geckodriver' executable needs to be in PATH.
- QQ、微信、新浪微博和百度第三方登录
- 内存溢出
- Gradle--创建构建Variant