java - 超出最大 FPS

标签 java frame-rate

我正在尝试计算我的程序的 FPS。尽管给定的最大 FPS 正在超限,但我无法解释原因。我将 MAX_FPS 设置为 60 进行测试,并且总是显示大约 63

{...}
int frameCount = 0;
long time = System.currentTimeMillis();
while(running) {
    try {
        {...} // do something
        Thread.sleep(1000 / MAX_FPS);
        frameCount++;
        if (System.currentTimeMillis() - time >= 1000) {
            {...} // display FPS w/ frameCount
            frameCount = 0;
            time = System.currentTimeMillis();
        }
    } catch (InterruptedException ex) {
        System.err.println(ex.toString());
    }
}
{...}

最佳答案

1000/60 在整数数学中是 16,1000/16 大约是 62.5。假设线程确实 hibernate 了接近 16 毫秒(可能会少一点),并且如果您的循环不需要那么长时间来执行迭代,并且如果倒数第二帧在 999 毫秒内完成,允许另一个更新潜入,那么循环可以实现每秒 63 次迭代是有道理的。

关于java - 超出最大 FPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28421016/

相关文章:

iPhone 3GS OpenGL 奇怪的 bug

java - 如何在注释中生成/声明注释字段?

java - 在 restful web 服务中访问 HttpServletRequest 对象

frame-rate - 赛车游戏,汽车在更快的计算机上移动得更快

c++ - 关闭 VSync 但在我的 DirectX 9 应用程序中仍然获得 60FPS

python - fps - 如何将计数除以时间函数以确定 fps

java - 无法将通用项实例化为列表 Java

java - Android 发布到休息网络服务 - 使用本地主机 glassfish

java - 使用经纬度计算两个地点之间的距离在java中得到错误的距离

c++ - 如何为游戏循环制作计时器?