2016-12-12 15 views
-1

Я использую язык Scala. Используемые библиотеки: Akka, LWJGL (включая GLFW)LWJGL: Weird behiavour Проблема с GLFW Key Callback

При тестировании с высокой частотой кадров, например 4000, все работает так, как ожидалось. Но по мере того как я опускаю fps до 30, добавляя кубики 100k, ключевой опрос glfw, похоже, вызывает проблемы.

Когда я выпускаю ключ, обратный вызов вызывается мгновенно с новым событием key_pressed, а затем через несколько секунд появляется новый ключ. Пожалуйста, смотрите это видео здесь для подробного примера: https://youtu.be/l2kCWWK44ig

Я удостоверился, что активен только один обратный вызов, и есть только 1 вызов glPollEvents(). Если это не так странно, вызов glPollEvents() 20 раз за цикл обновления, похоже, сокращает время между выпуском ключа и вторым событием key_released ...

Спасибо!

+0

GLFW работает нормально, проблема в вашей реализации, прочтите http://stackoverflow.com/help/how-to-ask и опубликуйте минимальный полный проверяемый пример. – eldo

ответ

0

Я точно не нашел причину этого, но проблема исчезла. Из того, что я понял, запуск glfw и opengl в одном потоке в многопоточной игре, работающей со скоростью ниже 60 кадров в секунду, вызывает странное поведение во внутренней потоковой обработке glfw. Чтобы исправить это, я создал subthread в потоке основного окна и поставил быстрый цикл тикания, который вызывает glfwPollKeys быстрее, чем частота обновления окна. Теперь проблема ушла, по цене цикла и потока.

 Смежные вопросы

  • Нет связанных вопросов^_^