1

这是我一直好奇的事情。我有一个在几何方面相当基础的游戏(二维中的几千个四边形),当我不使用 Display.sync() 时,我得到的帧速率约为 550。但是,当游戏需要执行一些广泛的计算时(当世界发生变化时),FPS 会下降到 ~480。当我每次迭代调用 Display.sync(60) 时,FPS 的上限为 60,但是当执行相同的计算时,下降到大约 52 并且游戏有点卡顿。这比实际问题更令人烦恼,但我仍然很好奇为什么会发生这种情况。为什么 FPS 完全有能力保持在 60 以下时,为什么会降到 60 以下,此外,有没有办法防止这种情况发生?

4

1 回答 1

3

我没有使用 LWJGL 的直接经验,但很明显,当您指定 60 FPS 时,它实际上并没有测量实时 FPS 并对其进行说明。在不需要做其他工作的理想情况下,它可能只是休眠 60 FPS 所需的时间。

正如我所说,我不知道 LWJGL 的细节,但通常将主游戏线程与图形线程分开。即使在单核系统上,这也将提高性能,因为图形线程休眠所花费的时间可用于游戏线程上的计算。现在不管怎样,时间都花在了睡觉上。使用单独的线程也更好,因为游戏的速度不再依赖于图形 FPS。

于 2013-09-01T22:51:59.767 回答