0

编辑 2. 添加了 logcat 的截图。如果我将精灵的数量减少到 1,我仍然会得到这种间歇性的“停止/启动”——所以我不认为这是我的代码,因为使用 1 个精灵,我的帧速率徘徊在 85-90 fps 左右。我猜这是电话上的东西,logcat 记录了很多东西,所以我假设很多东西在后台运行。有没有办法让我的应用程序在运行时优先于其他服务?

编辑 1. 请参阅问题末尾的编辑详细信息

我创建了一个精灵测试,我在其中渲染了大约 290 个精灵。

1 个精灵的每秒帧数约为 80,而 288 帧仍为 30 左右,问题是精灵时不时停止和启动,这显然不是帧速率,所以有人知道可能是什么原因这个?(要明确的是,它不是减速,而是平稳运动一段时间,然后一切都停止了几分之一秒,然后又恢复平稳)。

这也发生在屏幕上的一个精灵上 - 但只是间歇性地,每 5 秒左右 - 我添加的精灵越多,它发生的越多,但帧速率永远不会低于 30 fps,(我知道这应该没问题平滑运动),所以我只是想了解这可能是什么。

我的精灵是从一个自定义类创建的,但只创建了 3 个实际对象(背景,一个在屏幕上移动的精灵(所以我可以测量平滑度),然后是 288 个精灵(实际上是重复使用的同一个对象) ) 以 6 个为一组进行渲染。

谢谢你的帮助。

硬件是三星 Galaxy Ace 手机。

编辑好的,所以我通过批处理例程进行了更改,现在我每次调用渲染 24 个精灵(14 个调用 = 336 个四边形 + 移动精灵 + 背景 = 338 个四边形)并且大约 47 FPS,所以我想知道可能导致除了 GC 之外,这种“生涩”的运动还是帧率下降太多?

在此处输入图像描述

4

1 回答 1

0

听起来像垃圾收集器正在运行。要验证这一点,只需查看 logcat ... 生涩时刻是否与标记为“dalvikvm”并以“GC_”开头的行相关?

于 2013-04-14T16:20:52.760 回答