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 的第一个建议。所以我只想让它变得更好:

为什么要计算一秒钟经过的帧数?我在我的应用程序中需要一个实时的 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 回答