目前我正在尝试使用 OpenGL ES为 Android设备开发2D 游戏,但 Android OS 使其尽可能痛苦。
通过消耗它可以消耗的所有电池,它看起来非常漂亮并且以 60FPS 平稳运行。然后我突然意识到了这一点。启用“省电”模式(Galaxy S III等)会导致 FPS 下降到 40。
所以我决定提高游戏速度并将计时器限制为 40FPS,这样就可以流畅地玩 40FPS 了。
另一个问题来了。这一次,即使最大值设置为 30 并且计算/绘图在同一个线程上,移动的对象也会随机闪烁。当“省电”被禁用(从设备菜单中禁用)时,它会保持平稳运行。
简而言之,“省电”模式会通过随机减慢 OpenGL ES 功能来减慢应用程序的速度,即使将 FPS 降至 40 并不是必需的。(有时一个函数需要 2-3ms 执行,需要 13-14ms 并且其他的运行正常)
我想知道是否有办法在代码中禁用“省电”模式并在退出时重新启用它。
PS:为了保持屏幕显示,我正在使用下一行:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "DoNotDimScreen");
this.mWakeLock.acquire();