在一个非常简单的示例中使用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;
}
但使用它与一个非常复杂的显示功能,键盘例程永远不会被调用,我不确定是什么部分阻止了这个调用,所以我只是在这里询问原因,我不能真正发布代码,因为这将是整个项目。。。我将freeglut与opengl上下文和glm一起用于数学计算。
然而,这是一个新的号召:
static void loop_function() {
glutSetWindow(win);
Scene::unique_scene->mainloop();
}
我有点不知道该怎么做才能找到错误,如果有人能启发我,我将不胜感激。