-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()
僅在存在鼠標事件或窗口大小發生更改時執行。
那麼爲什麼會發生這種情況呢?是否因爲主循環沒有得到執行直到鼠標事件或窗口調整大小?