用法
void glutPostRedisplay(void);
glutPostRedisplay 標記當前視窗需要重新繪製。 通過glutMainLoop下一次循環時,視窗顯示將被回調以重新顯示視窗的正常面板。多次調用glutPostRedisplay,在下一個顯示回調只產生單一的重新顯示回調。
為了便於理解,用下面的例子 來說明:
假設有繪製代碼:
glutDisplayFunc(display); // opengl drawing goes here
glutTimerFunc(30, drive, -1); // physics, movement equations here
glutMainLoop();
另外有代碼如下:
void drive (int data)
{
glutTimerFunc(30, drive, -1); // call drive() again in 30 milliseconds
/*callback function moves the car. .... move x, y, z, etc
前面的代碼不用理解,就是移動了物體,繪製的畫面改變了*/
glutPostRedisplay();
}
如果有glutpostredisplay,mainloop運行的過程會像下面這樣:
drive (-1);
display();
drive (-1);
display();
drive (-1);
display();
...
如果沒有glutPostRedisplay,glutMainloop運行的過程會像下面這樣:
drive (-1);
drive (-1);
drive (-1);
...