2016-12-12 14 views
-1

我正在使用Scala語言。 使用的庫有:Akka,LWJGL(包括GLFW)LWJGL:GLFW按鍵回調的怪異behiavour問題

當以高fps進行測試時(例如4000),一切都按預期工作。但是,當我通過添加10萬個立方體將fps降低到30時,glfw的關鍵投票似乎會遇到問題。

當我釋放一個鍵時,會立即使用新的key_pressed事件調用回調,然後幾秒鐘後發出新的keyrelease。請參閱此處的視頻以獲取詳細示例:https://youtu.be/l2kCWWK44ig

我確保只有1個回調處於活動狀態,並且只有1個glPollEvents()調用。 如果這並不奇怪,每次更新循環調用glPollEvents()20次似乎會減少密鑰釋放和第二次key_released事件之間的時間...

謝謝!

+0

GLFW工作正常,問題出在您的實現中,請閱讀http://stackoverflow.com/help/how-to-ask併發佈一個最小完整的可驗證示例。 – eldo

回答

0

我並沒有完全發現是什麼原因造成的,但問題沒有了。根據我的理解,在運行速度低於60 fps的多線程遊戲中,在同一線程中運行glfw和opengl會導致glfw輪詢內部線程出現奇怪的行爲。爲了解決這個問題,我在主窗口線程下創建了一個子線程,並放入一個快速滴答循環,以比窗口刷新速率快的速度調用glfwPollKeys。問題現在已經消失,以循環和線程的代價。