如何使用opengl es显示fps(android)

时间:2013-03-13 23:11:25

标签: android opengl-es frame-rate

我是java和opengl的新手,仍在学习,原谅我的无知。我已经制作了一个隐约可见的对象apk文件。现在我想在我的设备上播放应用程序时查看fps。我一直在关注这个教程http://www.youtube.com/watch?v=1MYgP8Oj5RY&list=UUKwypsRGgHj1mrlQXhLXsvg&index=67,并尝试修改它为Android但我无法让它工作。

有没有人能告诉我如何在角落或标题页上添加简单的fps指标以及如何控制fps的示例。

由于

2 个答案:

答案 0 :(得分:6)

如果您使用此类并调用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状态的调用来优化代码以获得更好的帧速率

here is a link for drawText()

答案 1 :(得分:0)

我知道现在已经很晚了,但这是谷歌的第一个建议。所以我只是想让它变得更好:

为什么计算一秒钟通过的帧数?我需要在我的应用程序中获得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();
    }
}