2016-12-12 18 views
-1

私はScala言語を使用しています。 ライブラリは以下の通りです:Akka、LWJGL(GLFWを含む)LWJGL:GLFWキーコールバックに関する奇妙な振舞い問題

たとえば、4000のような高フレームレートでテストすると、すべて正常に動作します。しかし、100kキューブを追加してfpsを30に下げると、glfwの主要なポーリングが問題になるようです。

キーを解放すると、コールバックは新しいkey_pressedイベントで即時に呼び出され、数秒後に新しいキーが解放されます。具体的な例については、こちらの動画をご覧ください:https://youtu.be/l2kCWWK44ig

コールバックがアクティブで、glPollEvents()コールが1つしかないことを確認しました。 glPollEvents()を更新ループあたり20回呼び出すと、キーリリースと2回目のkey_releasedイベントの間の時間が短縮されるようです。

ありがとう!

+0

GLFWが問題なく実装されていれば、http://stackoverflow.com/help/how-to-askを読んで、最小限の完全な検証可能な例を投稿してください。 – eldo

答えて

0

私はそれを引き起こしていたものは正確には見つかりませんでしたが、問題はなくなりました。私が理解したことから、g​​lfwとopenglを同じスレッドで実行すると、60fps以下で動作するマルチスレッド・ゲームでは、glfwの内部スレッドに異常な動作が発生します。これを修正するために、メインウィンドウのスレッドの下にサブスレッドを作成し、glfwPollKeysをウィンドウリフレッシュレートよりも速い速度で呼び出す高速のティッキングループを作成しました。この問題は、ループとスレッドの代価を払っています。