• 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体积,不要使用嵌套资源。用加载的方式,用完就释放。
  • 相关阅读:
    ListView Fragment 设置 setLayoutAnimation() 无效 Binary
    android dialog activity touch outside Binary
    Android EditText 监听软键盘删除键 Binary
    Log4net简介
    Js Cookies
    软件版本定义
    NHibernate配置文件和映射文件的详解
    MS SQLSERVER 一次性删除所有表以及视图等等
    SQL Server 2005调整兼容级别,存储过程:sp_dbcmptlevel
    jquery 屏蔽右击 复制
  • 原文地址:https://www.cnblogs.com/chenhongyu/p/3360213.html
Copyright © 2020-2023  润新知