OpenGL ES 2.0 VBO与渲染

转载:http://blog.csdn.net/prahs/article/details/49662925

OpenGL ES 2.0 VBO与渲染


1.VBO初始化

1) glGenBuffers()
生成bufferID
2) glBindBuffer()
操作它,参数为VBO的bufferID
3) glBufferData()
指定里面放的数据和用法

至此想用此VBO时再glBindBuffer()它的bufferID即可,里面一般放顶点数据(包括模型的xyz和纹理坐标uv),另外前提是已经编译和设定好了shader的program

2.使用VBO渲染

1) glEnableVertexAttribArray()
启用与顶点相关的shader的量
事先需要获取到它的handle,
比如
maPositionHandle = GLES20.glGetAttribLocation(mProgram, “aPosition”);
2) glBindBuffer()
操作想使用的VBO,参数为VBO的bufferID
3) glVertexAttribPointer ()
指定VBO里的数据的使用方法
这里有可能有多个glVertexAttribPointer (),它的最后一个参数是使用时每个元素的偏移量,比如顶点是xyzuv的float顶点,每个4*5个字节重复一次,则分开指定xyz坐标和纹理坐标时,最后一个参数的值分别取0和12
另外,最后不适用VBO时,最后一个参数可以直接指定要渲染的缓冲区
4) glDrawArrays()
指定画法(一般为GL_TRIANGLES,即三角形),数量等,即可使用VBO进行绘制
5) glDrawElements()
这是另一种画法,可以通过指定顶点索引的方式来画图形
使用这种方法渲染时,应该生成两块VBO buffer,一个用来存放顶点信息,另一个来存放索引信息,和普通顶点VBO区别是,存放顶点的VBO应该在使用和指定数据时使用GL_ELEMENT_ARRAY_BUFFER,再使用glDrawElements(). 例如
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, mBufferHandle[1]);

glBufferData(GL_ELEMENT_ARRAY_BUFFER,Count,buffer,GL_STATIC_DRAW);

glDrawElements(GL_TRIANGLES,count,GL_UNSIGNED_SHORT, 0);
    
    
参考
[OpenGL ES 06]使用VBO:顶点缓存
http://blog.csdn.net/kesalin/article/details/8351935
gles官方文档
https://www.khronos.org/opengles/sdk/docs/man/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值