使用复杂的显示功能可以防止glutKeyboardFunc工作

时间:2014-08-28 09:14:18

标签: c++ opengl glut freeglut

在一个非常简单的例子中使用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();
}

我有点迷失了如何找到错误,如果有人可以启发我,我将不胜感激。

1 个答案:

答案 0 :(得分:3)

在glutDisplayFunc中有一个无限循环不是要走的路,如果你添加了调用,它会在glutKeyboardFunc的末尾自动调用

glutPostRedisplay();