我是java和opengl的新手,还在学习,所以请原谅我的无知。我制作了一个迫在眉睫的对象 apk 文件。现在我想在我的设备上播放应用程序时查看 fps。我一直在关注本教程http://www.youtube.com/watch?v=1MYgP8Oj5RY&list=UUKwypsRGgHj1mrlQXhLXsvg&index=67并尝试为 android 修改它,但我无法让它工作。
谁能告诉我如何在角落或标题页上添加一个简单的 fps 指示器以及如何控制 fps 的示例。
谢谢
我是java和opengl的新手,还在学习,所以请原谅我的无知。我制作了一个迫在眉睫的对象 apk 文件。现在我想在我的设备上播放应用程序时查看 fps。我一直在关注本教程http://www.youtube.com/watch?v=1MYgP8Oj5RY&list=UUKwypsRGgHj1mrlQXhLXsvg&index=67并尝试为 android 修改它,但我无法让它工作。
谁能告诉我如何在角落或标题页上添加一个简单的 fps 指示器以及如何控制 fps 的示例。
谢谢
如果您使用此类并调用 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 状态的调用来优化代码以获得更好的帧速率
我知道已经晚了,但这是 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();
}
}