【发布时间】:2013-04-06 16:49:18
【问题描述】:
编辑 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 或帧速率下降太多之外,还有什么可能导致这种“生涩”的运动?
【问题讨论】:
标签: android performance memory sprite spritebatch