当前位置: 代码迷 >> Android >> Android的NDK开发中 关于VBO的有关问题
  详细解决方案

Android的NDK开发中 关于VBO的有关问题

热度:32   发布时间:2016-05-01 12:36:50.0
Android的NDK开发中 关于VBO的问题
每帧绘制的数据量大约300k,每帧数据都可能变化。我使用vbo 开了一个30k的空间,每次当数据量达到30k就调用glBufferSubData函数将数据上传给gpu 绘制,一帧绘制中 可能调用十多次glSubBufferData,vbo的状态是GL_DYNAMIC_DRAW。
vbo调用的是 \android-4\arch-arm\usr\include\GLES \gl.h

问题:对比 vbo方式和顶点数组,在pc上二者帧率差不多:
     FPS
vbo   26
va    25
程序中还有其他绘制操作,所以帧率并不高。奇怪的是,在手机上但是vbo的帧率反而要低:
                 FPS
glDrawArrays     27-29
glDrawElements   27-29
vbo              18-20

有vbo开发经验的 兄弟,请不吝赐教。
------最佳解决方案--------------------
你在绘制的时候调用 glSubBufferData 当然慢了,这个应该是数据准备阶段做的事情,渲染的时候一般只改变着色器里面的 uniform 参数
------其他解决方案--------------------
格式化一下 pc和手机上的统计结果:

FPS
vbo 26
va 25




FPS
glDrawArrays 27-29
glDrawElements 27-29
vbo 18-20

------其他解决方案--------------------
引用:
你在绘制的时候调用 glSubBufferData 当然慢了,这个应该是数据准备阶段做的事情,渲染的时候一般只改变着色器里面的 uniform 参数

理论上vbo支持动态数组,但是实际如果每帧 数据都改变,VBO效率还不如顶点数组。
VAO 效率没测试不清楚。
------其他解决方案--------------------
呵呵,有机会再来看看  
  相关解决方案