LWJGL:GLFW Key Callback 的奇怪行为问题

LWJGL: Weird behiavour Issue with GLFW Key Callback

我正在使用 Scala 语言。 使用的库是:Akka、LWJGL(包括 GLFW)

当以高 fps(例如 4000)进行测试时,一切都按预期进行。但是当我通过添加 100k 立方体将 fps 降低到 30 时,glfw 的关键轮询似乎出现了问题。

当我释放一个键时,回调会立即被一个新的 key_pressed 事件调用,然后在几秒钟后一个新的键释放。请在此处观看此视频以获取详细示例:https://youtu.be/l2kCWWK44ig

我确保只有 1 个回调处于活动状态,并且只有 1 个 glPollEvents() 调用。 如果这还不够奇怪,每个更新循环调用 glPollEvents() 20 次似乎可以减少按键释放和第二个 key_released 事件之间的时间...

谢谢!

我没有找到确切的原因,但问题已经解决。据我了解,运行 glfw 和 opengl 在多线程游戏 运行 的同一线程中以低于 60 fps 的速度导致 glfw 轮询内部线程中出现奇怪的行为。为了修复它,我在 window 主线程下创建了一个子线程,并放置了一个快速滴答循环,以比 window 刷新率更快的速度调用 glfwPollKeys。问题现在消失了,代价是一个循环和一个线程。