【发布时间】:2025-12-25 19:30:12
【问题描述】:
我最近开始开发自己的游戏引擎来获得乐趣。我实现了一种从文件中加载 Blender .OBJ 模型的方法,并且我成功地渲染了它们。但是,在进行压力测试时,我的基于 Delta-time 的 fps 系统遇到了一个不寻常的困境。在以 1500FPS 运行时,我需要 4 秒才能从模型墙的一端看到另一端。但是,如果我将 FPS 限制在 120FPS,那么从墙的一端看到另一端只需要 0.84 秒。随着我进一步探索,事实上,游戏移动速度似乎随着 FPS 的增加而降低。
这是我的 Timer 类:
class Timer
{
long lastFrame;
int fps;
long lastFPS;
int delta;
int fpsToReturn;
public Timer()
{
lastFPS = getTime();
}
public long getTime()
{
return (Sys.getTime() * 1000) / Sys.getTimerResolution();
}
public int getDelta()
{
long time = getTime();
delta = (int) (time - lastFrame);
lastFrame = time;
return delta;
}
public void updateFPS()
{
if (getTime() - lastFPS > 1000)
{
fpsToReturn = fps;
fps = 0;
lastFPS += 1000;
}
fps++;
}
public int getFPS()
{
return fpsToReturn;
}
}
当然,运动只是以下方面的东西:
camera.rotX += (0.5 * timer.getDelta());
有人有什么想法吗?这是 delta-time 应该如何工作的吗?当以 16FPS 运行时,它返回大约 65,在 120FPS 时,Delta 返回大约 8-9,而无上限的 FPS 它总是返回 0 或 1,如果这会有所不同或帮助您发现无上限的 FPS 是否有问题。非常感谢任何帮助,谢谢你们。
【问题讨论】:
标签: java lwjgl frame-rate timedelta