2016-03-03 40 views
-1

post我開始瞭解glutPostRedisplay API的功能。據瞭解,這個API不是調用回調函數,而是隻設置一個標誌,以便下一次主循環將調用它的回調函數。僞代碼是:glutPostRedisplay不會調用顯示回調,直到發生鼠標事件或窗口調整大小事件

void onNewFrame(int x, int y) 
{ 
    // Do calculations 
    std::cout << " New Frame " << endl; 
    glutPostRedisplay(); 
} 

void display() 
{ 
    std::cout << " Display " << endl; 
    // Calculations & opengl operations 
} 

這裏display()main()glutDisplayFunc()註冊的API。在控制檯中執行時,我可以看到「新框架」按預期打印,但無法看到「顯示」正在打印。 glutPostRedisplay() API將設置標誌,但在我的情況下,display()僅在存在鼠標事件或窗口大小發生更改時執行。

那麼爲什麼會發生這種情況呢?是否因爲主循環沒有得到執行直到鼠標事件或窗口調整大小?

回答

0

在進一步調查中,我發現問題出在計算機的能力上。當我在高配置PC上重新運行相同的代碼時,重新渲染速度非常快。在這種情況下,顯示功能經常被調用。