stage3d 你不知道的巨坑

如果你是大牛,那你没必要看下去。因为你除了觉得自己牛之外,完全不会把别人放在眼里。低调是一种心态
如果你觉得我说的是假的?很简单你可以拿adobe scout 看下我说的以下几点是否会出现。
stage3d,很多人都在用吧,不知道大家知不知道stage3d的坑是什么:
1:纹理上传速度极其的慢。这个在手机上,就是一个大瓶颈。
2:不支持真正的异步纹理上传,这个也是一个瓶颈,每次上传动画都是卡顿的。
3:内存的消耗比其他语言多了50%不知道大家知不知道:
正常情况来算 2048*2048的图内存消耗在16m。而stage3d是24m。cocos2d的是16m。我是自己写的stage3d渲染。这个说实话我不知道它怎么算出来的。16位的纹理是 12m.cocos2d是 8m.ATF纹理 是 6m.而cocos2d的是4m。
4:上传Bitmap这就是一个巨坑。2048*2048的图上传的时候会产生 36m的bitmapdata的内存。加上纹理内存24m。算起来可以吓死你。36m里的一半是可以手动释放的。而另外一个。就不能需要等10秒的时间系统才会自己释放。对于这个我已经找到了办法,可以在不产生bitmapdata内存的情况下,上传到GPU里。5:内存释放问题,在用scout看内存的时候,的确是释放了。但是用Instruments 检测,内存却没有释放,全部堆在了AIR播发器里,意思是as3的内存释放了但是虚拟机的没有释放。。
6:在ios开发里播发器占有内存 15m,as3自带库占用 3m 加上swf 1m
微博:技术交流可以关注我的微博
解决方法:

本帖隐藏的内容

1:使用ATF纹理,快有好处但是有弊端,图片质量很难看。
2:ATF默认是支持异步的,但是bytearray的体积也会造成卡顿。所以不是真正的异步。使用ATF并且开启压缩选项,上传时设置异步上穿,占用主线程的时间基本可以无视,后果是异步解码慢的坑。
3:这个不知道是不是3.8的bug。还是什么。(这里说下官方默认是预留了mipmap的内存。所以你懂的。)解决办法是使用RectangleTexture
4:。。。。
5:目前看来到一定的内存时不会继续上升,应该是flash自己保留系统内存。
6:减小swf体积,不要使用嵌套资源。用加载的方式,用完就释放。
posted on 2013-10-09 21:55  猎妖手  阅读(1112)  评论(0编辑  收藏  举报