Изменения состояния OpenGL, сделанные в glutKeyboardFunc, не видны сразу

У меня есть функция glutKeyboardFunc (клавиатура), где клавиатура имеет:

void keyboard(unsigned char key, int x, int y){
float alpha = 1.0;
switch(key){
case 'c':
glClearColor(1,0,0,alpha);
printf("success");
break;
}
}

Это краткое изложение функции; он работает правильно, но только после того, как произошло какое-то другое действие. Например, оператор printf сообщает об успехе сразу после нажатия клавиши «c», но цвет фона не становится активным, пока я не нажму где-нибудь еще на холсте. Я хочу, чтобы все нажатия клавиш имели немедленный эффект.

1

Решение

Вам необходимо обновить экран:

void keyboard(unsigned char key, int x, int y){
float alpha = 1.0;
switch(key){
case 'c':
glClearColor(1,0,0,alpha);
printf("success");
glutPostRedisplay(); // trigger the screen redisplay
break;
}
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]