java - FPS控制游戏速度

标签 java timer lwjgl frame-rate

背景信息

我最近一直在使用 LWJGL 开发一款游戏,我很好奇在不使用 Display.sync(60) 函数(这将 fps 限制为 60)的情况下运行游戏可以获得多少帧每秒。在注释掉代码后,我偶然发现游戏速度更新为 9000 fps,这反过来又使游戏每秒运行 9000 次。

问题

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

最佳答案

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;

我希望这会有所帮助:)。

关于java - FPS控制游戏速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24729328/

相关文章:

java - 创建一个包含方法的父类(super class)

java - Apache tomcat7 作为 Windows 服务

java - 安卓解密错误

java - JPanel 中的 JPanel 在不同位置被绘制两次

android - 安卓简单提醒

ios - audioQueue 中的定时事件

java - Java HeatMap 面板中 HeatMap 的 MouseListener

c# - 如何在父窗体的控件中访问用户定义的控件

java - LWJGL displayMode() 的问题

java - 纹理未正确渲染 LWJGL