【问题标题】:Low Flash AS3 Performance低闪存 AS3 性能
【发布时间】:2012-01-21 02:01:09
【问题描述】:

我正在开发一个使用 Alternativa3D 7.8 引擎在 AS3 中编码的游戏,但它没有我希望通过它实现的 FPS,我正试图完全理解原因。我知道在场景中使用 3D 对象可能会对性能造成很大的负担,但我只使用了非常有限数量的 3D 对象,而且每个对象的多边形数量都相对较少。

我想知道在实际渲染场景之外是否还有其他原因,例如内存泄漏。

我想找出一种方法来查看性能在我的代码中的分布情况,看看是否有某些区域导致了这种情况。我的计算机上通常只能获得大约 10-15 FPS,如果可能的话,我希望将其保持在恒定的 20-24 或更高。

【问题讨论】:

  • 我认为没有人可以在不看代码的情况下回答您的问题。你需要自己做测试——禁用代码的某些部分,看看它是否影响帧率,然后禁用其他部分并检查帧率等,最终你可能会发现瓶颈所在。
  • 一个好的开始是使用 8.x 引擎,它似乎使用的是硬件加速的 Stage3D。 7.x 完全在软件上运行,毫无疑问会慢几个数量级。

标签: performance flash actionscript-3 3d


【解决方案1】:

我认为这个问题不一定应该被否决,尽管它有点宽泛。 OP 正在询问有关 AS3 应用程序的一般性能提示。

确实,我们不能在没有看到他的代码的情况下给他具体的指示,但我们仍然可以为他提供更一般的提示/技巧。这是一些分析,非常笼统:

我认为您的性能问题不一定与您的 3D 有任何关系,尽管它们可能。当游戏世界出现在屏幕上的那一刻,即使鼠标移动也变得非常缓慢,而当我暂停它的那一刻,帧率就会提高——这对我来说意味着你在每一帧上都进行了大量的迭代和计算。

我会从这个开始:您的主游戏循环内部是否有任何计算密集型循环?例如,我看到你正在处理海平面,因为它会影响陆地——你是否正在做一些事情,比如计算每一帧的所有水属性?

拥有大量“3D”对象不一定是问题,因为 3D 对象只是一组点。它们比 2d 对象的定位更密集,因为您包含了一个额外的维度,但没有那么密集,几个 3d 对象会导致这种性能。我不认为他们是你的问题(虽然我可能是错的)。

相反,这是您执行的计算类型。寻找循环,找出您可以注释掉的内容并立即看到更好的性能,然后一旦您将其隔离,就可以看到您可以做些什么来缓存这些计算的输出,这样您就不必在每一帧上重新计算它们.

干杯, mb

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多