2013-03-13 109 views
3

我是新来的java和opengl,仍然在学习,所以原谅我的无知。我做了一个迫在眉睫的对象apk文件。现在我想在应用程序在我的设备上播放时查看fps。我一直在按照这个教程http://www.youtube.com/watch?v=1MYgP8Oj5RY&list=UUKwypsRGgHj1mrlQXhLXsvg&index=67,并试图修改它为Android,但我不能让它的工作。你如何显示与opengl的fps(android)

任何人都可以向我展示如何在角落或标题页上添加简单的fps指标以及如何控制fps的示例。

感谢

如果你使用这个类,并调用逻辑框架(),它会告诉你的FPS在您的logcat日志

回答

7

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

+0

是否有将drawText()与drawText结合的方法,以便它显示在glsurface上? – ihave2teeth 2013-03-13 23:41:00

+0

我用链接更新了代码 – JRowan 2013-03-13 23:53:31

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