android ms3d优化及其他

MS3D移植与优化
本文分享了将MS3D模型移植到Android平台的过程及优化经验。从初始的700+ms/f帧率提升至70+ms/f,通过改进绘制方式、减少对象创建与垃圾回收等手段实现。
把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/archive/2011/02/13/1953884.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值