1

現在、 OpenGL ES を使用してAndroid端末用の 2D ゲームを開発しようとしていますが、Android OS は可能な限り苦労します。

非常に見栄えが良く、バッテリーを可能な限り消費して60FPSでスムーズに動作します. すると、ふと気がつきました。「省電力」モード ( Galaxy S IIIなど) を有効にすると、FPS が 40 に低下します。

そこで、ゲーム速度を上げてタイマーを 40FPSに制限することにしました。これにより、40FPS でスムーズにプレイできるようになります。

そして、ここで別の問題が発生します。今回は、最大 FPS が 30 に設定されていて、計算/描画が同じスレッド上にある場合でも、移動するオブジェクトがランダムにちらつきます。省電力」が無効になっている場合(デバイスメニューから無効)、スムーズに動作し続けます。

つまり、「省電力」モードは、FPS を 40 に落とす必要がない場合でも、OpenGL ES 機能をランダムに遅くすることでアプリを遅くしています。(実行に 2 ~ 3 ミリ秒かかり、13 ~ 14 ミリ秒かかる関数があり、他の関数は正常に実行されている場合があります)

コードで「省電力」モードを無効にし、終了時に有効に戻す方法があるのだろうか。

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();
4

1 に答える 1

2

これはあなたを助けるかもしれません:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
于 2013-02-28T10:51:23.273 に答える