2014-08-28 36 views
1

在一個非常簡單爲例利用glutKeyboardFunc,我能得到它很容易的工作:使用複雜的顯示功能可以防止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

好吧,在我的場景,主循環在glutKeyboardFunc結束時自動調用,有一個循環不是一個好主意,因爲glut鍵盤功能不是多線程的,它在顯示功能被調用之前等待顯示功能完成... 我會盡快添加這個答案作爲答案。 – aze 2014-08-28 09:17:07

回答

3

有在glutDisplayFunc無限循環是不是要走的路,那麼它將在您添加的通話

glutPostRedisplay();