Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 22:16   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию GLUT и клавиатура

Сколько я не искал в интернете, так и не нашел, как работать в glut с клавиатурой. То что предоставляется функционалом glutkeyboardfunc очень мало или же я чего-то не знаю. Дело вот в чем. Этой функцией я могу определить о том что клавиша нажата, а то, что она отпущена - нет. Конечно приоритет я отдаю кроссплатформенности. Поэтому никаких GetAsyncKeyState использовать не хочу. Не понимаю, что стоит осуществить событие отпущенной клавиши. Если же использовать glutkeyboardfunc, то после нажатия кнопки, я получаю одно событие и если ее не отпускать, где-то через секунду начнут поступать еще события с маленьким интервалом, в сравнении с первым. Как это обойти? Думаю, что в разделе для игр находится больше людей, которые пользовались glut. Неужели нет решения для такой проблемы? Может с Qt легче будет?

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 30.11.2012, 01:37   #2
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,691
По умолчанию

glutKeyboardUpFunc

Цитата:
Если же использовать glutkeyboardfunc, то после нажатия кнопки, я получаю одно событие и если ее не отпускать, где-то через секунду начнут поступать еще события с маленьким интервалом, в сравнении с первым. Как это обойти?
Очевидно же:
keyboardState[key] = true;

И вдобавок если вы решите реализовать ввод текста в вашей игре, то без этих задержек не обойтись.

В принципе повторение можно отключить glutSetIgnoreKeyRepeat (true), тогда событие о нажатии клавиши придет только один раз, а следующее событие будет только после повторного нажатия этой же клавиши, если рассматривать только одну клавишу.

Последний раз редактировалось Kostia; 30.11.2012 в 01:44.
Kostia вне форума Ответить с цитированием
Старый 30.11.2012, 07:22   #3
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию

Цитата:
keyboardState[key] = true;
Я так пробовал уже. Переменной после того, как клавишу отпустили нужно ведь FALSE присвоить. Иначе она остается нажатой до завершения приложения. А такого события в glut нет.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 30.11.2012, 08:20   #4
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,691
По умолчанию

Цитата:
А такого события в glut нет.
Я же написал: glutKeyboardUpFunc
Kostia вне форума Ответить с цитированием
Старый 30.11.2012, 14:41   #5
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,603
По умолчанию

Ой, извините, не заметил Спасибо большое.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
GLUT [ OpenGl ] Coco_Jamboo Gamedev - cоздание игр: Unity, OpenGL, DirectX 7 02.11.2017 22:02
mingw32-GLUT siemdi Qt и кроссплатформенное программирование С/С++ 0 02.07.2012 12:29
Использование glut vik112358 Общие вопросы C/C++ 1 04.01.2012 20:19
Инициализация Glut windzor Общие вопросы .NET 2 07.02.2010 12:17