在一个非常简单的例子中使用glutKeyboardFunc,我可以很容易地使它工作:
void special(int key, int x, int y) {
printf("key %d\n", key);
}
void keyboard(unsigned char key, int x, int y) {
printf("key %d\n", key);
}
void display() {}
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
glutInitWindowSize(640, 480);
glutCreateWindow("GLUT Program");
glutDisplayFunc(display);
glutKeyboardFunc(keyboard);
glutSpecialFunc(special);
glutMainLoop();
return EXIT_SUCCESS;
}
但是使用它具有非常复杂的显示功能,键盘例程永远不会被调用,我不确定阻止此调用工作的部分,所以我只是在这里询问关于可能是什么原因的想法,我可以& #39; t真的发布代码因为那将是整个项目...我正在使用带有opengl上下文的freeglut和用于数学计算的glm。 不过这是新的电话:
static void loop_function() {
glutSetWindow(win);
Scene::unique_scene->mainloop();
}
我有点迷失了如何找到错误,如果有人可以启发我,我将不胜感激。
答案 0 :(得分:3)
在glutDisplayFunc中有一个无限循环不是要走的路,如果你添加了调用,它会在glutKeyboardFunc的末尾自动调用
glutPostRedisplay();