android ms3d优化及其他

把ms3d移植到android平台上并不是很难,但是1000+个三角形在800MHz的手机上却只能跑到700+ms/f,确实有点泄气。刚开始以为就是硬件慢,后来同事指出800MHz相当于奔三,即使在虚拟机里跑,也不会这么慢。于是就花了几个晚上,优化到了70+ms/f,继续优化的话我只能想到用ndk了。

总结一下移植以及优化时的经验教训: 

  1. 由于ms3d里相同的顶点坐标有不同的纹理坐标,所以不同的三角形不能共用顶点,用glDrawArrays绘制时会节省一个顶点索引缓存
  2. ms3d里的uv坐标与android里的坐标系统相同,都是以左下角为原点,所以v就不用像opengl中被1减了
  3. 顶点坐标和纹理坐标都用数组存储,用Buffer的wrap方法生成Buffer对象,修改数据时直接修改数组中的值即可(最开始每次更新数据时都是把Buffer清空,重新put,非常慢)
  4. 把多维数组展开成一维数组
  5. 把复杂对象的临时变量(如数组)提成类的静态常量(虚拟机创建/销毁对象以及垃圾回收的消耗还是比较高的)
原文地址:https://www.cnblogs.com/gg_shily/p/1953884.html