代码之家  ›  专栏  ›  技术社区  ›  aze

使用复杂的显示功能会阻止glutKeyboardFunc工作

  •  1
  • aze  · 技术社区  · 10 年前

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

    我有点不知道该怎么做才能找到错误,如果有人能启发我,我将不胜感激。

    1 回复  |  直到 10 年前
        1
  •  3
  •   aze    10 年前

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

    glutPostRedisplay();