Продолжение ранее заданного мной вопроса (создан в новой теме т.к. данный раздел более соответствует тематике чем предыдущий).
Пробовал задать движение "объекта" с помощью функции glut'a :
glutSpecialFunc(NameFunc);
Но столкнулся с проблемой что движение получается несколько рваным и не равномерным. Выражается это в следующем:
При зажатии кнопки "Вперед", "Объект" производит 1 "шаг" и зависает на пол секунды, после чего уже начинают обрабатываться повторы функции "вперед"(как повтор символа в ворде или ещё где).
Посмотрев по буржуйским сайтам нашёл подобие ответа на мой вопрос как этого избежать, функции:
glutKeyboardFunc(NameFunc);
glutKeyboardUpFunc(NameFunc);
Как я понял (мои скудные знания буржуйского), они позволяют использовать систему, так сказать, "флагов" для клавиш.
Есть у кого опыт использования подобных функций? Не могли бы подробнее, и по русски привести простой урок на примере какой нибудь клавиши, и разжевать для чайника?
Возможно кому нибудь пригодится:
Код:
int KeyDown[256];
void UserInput(){
if(KeyDown['d']==1){
//Тутава ваш код
}
if(KeyDown['a']==1){
//Тутава ваш код
}
}
void keyboard(unsigned char key, int xmouse, int ymouse){
KeyDown[key] = 1;
}
void keyboardUp(unsigned char key, int xmouse, int ymouse){
KeyDown[key] = 0;
}
В маин добавить:
Код:
....
glutKeyboardFunc(keyboard);
glutKeyboardUpFunc( keyboardUp );