Если вы настаиваете на использовании перенасыщения (не очень хорошая идея, IMO, но такова жизнь), вы обычно хотите поместить весь свой код рисования в одно место и передать (указатель на) эту функцию (или ту, которая ее вызывает ) до glutDisplayFunc
. В своей функции клавиатуры вы просто делаете что-то вроде:
rot+=1;
glutPostRedisplay();
glutPostRedisplay()
означает, что сообщение (по крайней мере, концептуально) отправлено в очередь, чтобы сообщить, что отображение необходимо обновить. Исходя из этого, любая функция, которую вы передали glutDisplayFunc
, будет вызываться (но не обязательно сразу).
Если вы занимались программированием Windows API, это практически идентично обычному шаблону: когда вы получаете ввод, вы изменяете данные и лишаете законной силы прямоугольник ваших окон. В ответ на это вы получите сообщение WM_PAINT, и ваш код обновит дисплей. Несмотря на то, что детали различаются, вы также можете увидеть схожие схемы с MacOS и оконной системой X.