glfw pollevents()真的很慢

时间:2015-08-27 16:43:30

标签: java opengl lwjgl glfw

我一直在对我的游戏引擎做一些基准测试,发现了一个犯规罪魁祸首:

glfwPollevents();

我已经对此进行了彻底的计时,其中95%的时间表现得如预期的那样,但有时它会占用我更新间隔的5-200%(即1/60秒)。我真的不知道造成这种情况的原因。在这些巨大的民意调查期间,没有调用我定义的回调。一切都很安静。这完全是不可预测的。

我有一些理论: 1.调度程序在函数内的某处中断。这是不太可能的,我会在我的循环的其他部分看到相同的行为,我不这样做。

  1. 有一些邪恶的回调,我不知道有什么地方叫做和吃饭的时间。

  2. lwjgl问题。 LWJGL是glfw的一个包装器,所以我可以在Java中使用它。

  3. 司机,但是哪个?

1 个答案:

答案 0 :(得分:1)

glfwPollEvents();是特定于操作系统的系统调用的包装器,使您可以检查应用于窗口的任何事件。有许多事情被视为事件,包括用户级别的东西,如选择或调整窗口大小,还包括GLFW无法访问的系统级内容。有许多事情可能导致你正在描述的短暂中断/挂起。

一般来说,最好的建议是在不同的线程上处理呈现,并使用消息队列来指示主线程执行“主线程关键任务”(比如打开一个新窗口或其他类似的重要任务)。 / p>