5

私はjavaとopenglを初めて使用しますが、まだ学習しているので、無知であることを許してください。迫り来るオブジェクトapkファイルを作成しました。ここで、アプリケーションがデバイスで再生されているときにfpsを表示したいと思います。このチュートリアルhttp://www.youtube.com/watch?v=1MYgP8Oj5RY&list=UUKwypsRGgHj1mrlQXhLXsvg&index=67をフォローしていて、Android用に変更しようとしましたが、動作させることができません。

コーナーまたはタイトルページに簡単なfpsインジケーターを追加する方法と、fpsを制御する方法の例を誰かに教えてもらえますか。

ありがとう

4

2 に答える 2

8

このクラスを使用して logFrame() を呼び出すと、logcat のログに fps が表示されます。

import android.util.Log;

public class FPSCounter {
    long startTime = System.nanoTime();
    int frames = 0;

    public void logFrame() {
        frames++;
        if(System.nanoTime() - startTime >= 1000000000) {
            Log.d("FPSCounter", "fps: " + frames);
            frames = 0;
            startTime = System.nanoTime();
        }
    }
}

読んだものから、コードを最適化して、gl 状態への呼び出しを最小限に抑えてフレームレートを向上させます。

ここに drawText() のリンクがあります

于 2013-03-13T23:16:12.777 に答える
2

遅いことはわかっていますが、これは Google の最初の提案です。だから私はそれをより良くしたいだけです:

なぜ 1 秒間に経過するフレームを数えるのですか? アプリケーションで FPS のライブ値が必要です (これも使用する必要があります)。そして、これまでのところ、私はそれが言うことを知っています

Frames/Second

つまり、あるフレームから次のフレームまでの時間を測定して、次のように言うことができます。

Second/Frame

FPS に到達するには、単純に

1/(Second/Frame).

これがコードです。上記のコードを使用して編集し、結果を取得しました。

public class FPSCounter {
    private long lastFrame = System.nanoTime();
    public float FPS = 0;

    public void logFrame() {
        long time = (System.nanoTime() - lastFrame);
        FPS = 1/(time/1000000000.0f);
        lastFrame = System.nanoTime();
    }
}
于 2015-09-25T23:22:12.550 に答える