FPS控制游戏速度

时间:2014-07-14 03:58:35

标签: java timer lwjgl frame-rate

背景信息

我最近一直在使用LWJGL进行游戏开发,我很好奇我可以在不使用Display.sync(60)功能的情况下运行游戏每秒可以获得多少帧数(这限制了fps到60)。在评论出代码时,我偶然发现游戏速度更新为9000一些fps,这反过来又让游戏每秒运行9000次。

问题

我应该如何实施游戏计时器以防止fps产生游戏实际运行速度的问题?我知道我需要将两个定时器分开,但是如何/哪种方式最有效(在java中)?

1 个答案:

答案 0 :(得分:3)

TheCodingUniverse在这里提供了一个很棒的教程:http://thecodinguniverse.com/lwjgl-frame-rate-independent-movement/

但是,基本答案是通过保存最后一个System.currentTime()来移动帧,然后将其与此System.currentTime()进行比较。然后移动时就像object.move(x * delta, y * delta);

引用上述链接,

// Under the class definition
private static long lastFrame;
private static long getTime() {
return (Sys.getTime() * 1000) / Sys.getTimerResolution();
}
private static double getDelta() {
long currentTime = getTime();
double delta = (double) currentTime - (double) lastFrame;
lastFrame = getTime();
return delta;
}
// In initialization code
lastFrame = getTime();
// In game loop
long delta = getDelta();
movement_x += dx * delta;

我希望有帮助:)。