gpt4 book ai didi

android - 如何调节我的 Android 应用程序中的帧率?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:09:37 25 4
gpt4 key购买 nike

如何调节我的 Android 应用程序的帧率?我希望游戏以恒定速度运行。我的应用程序不需要高帧率,所以我不想要一个,因为那样会占用比必要时更多的电池。

最佳答案

不要使用帧率来衡量时间。用时间来衡量时间。一次 GC 传递可能需要 3/10 秒,其他任务可能会在后台启动,等等。

总有一个系统/设置的运行速度比您想象的要慢。

那么您不用以像素为单位指定速度,而是以像素/秒为单位。每一帧动画都需要一定的时间,等等。在你的游戏引擎中,当计算下一帧时,你的输入之一是“自上一帧以来已经过了多少时间”。您将该值确定为秒的分数,然后将您的速度/秒乘以该分数。结果是给定事物自上一帧以来移动了多远。

请注意,非常慢的帧速率会对碰撞检测造成严重破坏,尤其是对于快速移动的物体。如果事物 1 在帧之间完全穿过事物 2,则仅检查 BBoxes 或半径不会削减它。

说了这么多,sleep() 是你的 friend 。在帧处理开始时,调用 System.currentTimeMilis()。在帧处理(包括渲染)结束时,再次检查当前时间。如果差异不够长,请休眠 (N) 足够的时间以匹配您所需的帧速率。

因此,如果您想要最大 20fps,那么每帧应该花费 50 毫秒(1000 毫秒/20 = 50 毫秒)。如果一帧只用了 10 毫秒来模拟和渲染,那么您需要再休眠 (50 毫秒 - 10 毫秒 = ) 40 毫秒,然后再继续下一帧。

或者,您可以尽可能快地运行模拟,并且只每隔一段时间渲染一次屏幕。这不会对电池生命周期有多大帮助(尽管 OpenGL 硬件加速非常昂贵,如果我的 Evo 散发的热量有任何迹象),但可以带来非常流畅的体验。哎呀,你可以在那个时候开始计算诸如运动模糊之类的东西。

关于android - 如何调节我的 Android 应用程序中的帧率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4108737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com