AS3/Spritesheets/Starling 的 Flash 性能

Posted

技术标签:

【中文标题】AS3/Spritesheets/Starling 的 Flash 性能【英文标题】:AS3/Flash Performance of Spritesheets/Starling 【发布时间】:2012-12-03 09:28:08 【问题描述】:

我目前正在尝试优化 AS3/Flash 网络(浏览器)应用程序 (FP11+)。这是一个完整的浏览器窗口 Flash 应用程序,可通过(Greensock 的)SWFLoader 远程加载环境/背景图形并将它们添加为位图(下载时间不会导致问题)。其他次要图形,如按钮、处理/加载动画、窗口和 UI 元素是使用 AS3 图形 api 绘制的。

在加载额外的 swf 以在 Flash 应用程序中显示时,我遇到了 FPS 问题(目标是 40)(当加载的 SWF 生成动画并降至零时,FPS 变化很大)。平均 MB 使用量在 50-100MB 之间(由 FlashProfiler 报告)。

我的问题是:为远程加载的图形和/或绘制的图形实施本地 spritesheet 会显着提升性能吗?

其次,由于 Starling 使用 GPU 进行处理和动画,将应用转换为使用 Starling 会显着提升性能吗?

或者,我是否一直专注于最大化循环、列表/向量和数据使用的性能?关于这一点,我读过关于使用数组/列表与向量以及 foreach 与特定于集合的函数(过滤器、映射等)的混合意见。任何直接比较这些技术的经验也会有所帮助。

谢谢!

【问题讨论】:

能否提供链接让我们查看申请?除此之外,我没有在 Flash Player 应用程序中使用精灵表的经验(我假设您指的是在一个图像中单个帧彼此并排布置的图像,将动画减少为将“窗口”移动到每个这样的帧图形上) .像 Starling 这样的 GPU 驱动框架能够毫不费力地处理数千个对象,因此可以提供帮助。不过,您应该首先注意您的循环和数据使用模式 - 基本上,首先是配置文件,然后相应地对其进行重构。 @amn:是的,你所描述的也是我认为的精灵表。它们在游戏开发中被大量使用。我认为该链接将不再有助​​于描述它,但在接下来的 24-48 小时内,此链接将处于活动状态:link。请参阅已编辑的添加请求重新循环等。 【参考方案1】:

当您有大量位图资源要显示在带有 GPU 以提供加速的计算机或设备上时,Starling 将大有帮助。如果您使用 Starling,您可以通过将各种图像放在一个 sprite 表中来减少 GPU 必须执行的绘制调用次数,从而获得更好的性能。

因此,大量图像加上大量旋转或缩放将充分利用 GPU 的优势。如果您不断地重绘矢量图形或其他画布类型的操作,Starling 可能帮不上什么忙。它对具有不受支持的 GPU 的计算机也没有帮助。

在您做出位图与渲染决定后,实际 AS3 代码的任何优化都应使用分析器完成。

【讨论】:

以上是关于AS3/Spritesheets/Starling 的 Flash 性能的主要内容,如果未能解决你的问题,请参考以下文章