2013-03-13 119 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(); 
    } 
}