带和不带Display.sync()的LWJGL帧率

时间:2013-09-01 22:44:56

标签: java lwjgl frame-rate

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

1 个答案:

答案 0 :(得分:2)

我没有LWJGL的直接经验,但很明显,当你指定60 FPS时,它实际上并没有测量实时FPS并考虑它。在理想情况下,它可能只需要60 FPS所需的时间就可以睡觉,而不需要做其他工作。

正如我所说,我不知道LWJGL的具体细节,但通常将主游戏线程与图形线程分开。这将改善甚至在单核系统上的性能,因为图形线程休眠所花费的时间可用于游戏线程上的计算。现在无论如何都要花时间睡觉。使用单独的线程也更好,因为游戏的速度不再与图形FPS相关联。