Как узнать, удерживается ли кнопка в OpenGL/Glut?(Линукс)
Вопрос
Это аналогичная проблема: Связь
Проблема была решена вызовом GetAsyncKeyState().Хотя все в порядке, мне нужна альтернатива Linux.Мне нужно знать, активна ли кнопка держал вниз, а не просто нажать (из-за задержки буфера клавиатуры).
Существует ли что-нибудь подобное в библиотеках OpenGL/Glut, или мне придется искать где-то еще?
Решение
Я никогда не использовал Glut, но знаю, что многие скажут СДЛ лучше.Я использовал SDL, и он мне очень нравится.Он делает все то же, что и Glut, и даже больше.В SDL вы можете использовать SDL_PollEvent()
чтобы получить состояние клавиши без задержки буфера клавиатуры.
Редактировать:Я почти ничего не знаю о перенасыщении, но, похоже, вы можете использовать glutKeyboardFunc
для обнаружения обычных ключей и glutSpecialFunc
для клавиш, которые не генерируют символы ASCII (например, сдвиг).Я не уверен, что есть лучший способ, поскольку это кажется не очень приятным.
Другие советы
Вы можете определить, когда происходит событие нажатия клавиши, записать это состояние, а затем прослушать событие отпускания клавиши.
Как уже было сказано, вам придется создать свой собственный конечный автомат, и это несложно.Но я думаю, вам также необходимо использовать этот метод обратного вызова.
http://pyopengl.sourceforge.net/documentation/manual/glutKeyboardUpFunc.3GLUT.xml