双缓冲使用到的基本函数:
1,void glutSwapBuffers(void) 函数
来实现从非显示缓冲区到显示缓冲区的复制.一般放在场景绘制函数(void RenderScene(void))的最后.
2,glutInitDisplayMode()函数
参数设为双缓冲,GLUT_DOUBLE;
3, void glutPostRedisplay(void)函数
glutPostRedisplay 标记当前窗口需要重新绘制。通过glutMainLoop下一次循环时,窗口显示将被回调以重新显示窗口的正常面板。
需要显示的绘图必须在函数最后调用.
4, glutTimerFunc(unsigned int millis, void (*func)(int value), int value)函数
1), 定义定时器回调函数 void myTimer(int value)用value区分是哪个定时器
2), 在函数里改变和位置有关的变量,然后调用glutPostRedisplay();用来重绘
3), 在定时函数末尾再次调用glutTimerFunc
基本程序结构:
// source.cpp
// 全局变量
...
void RenderScene()
{
// 绘图
...
glutSwapBuffers();
}
void myTimer(int value)
{
//改变和绘图有关的变量
...
glutPostRedisplay();
glutTimerFunc(10,myTimer,1);
}
... //其他函数
int main(int argc, char *argv[])
{
//glut初始化等函数
...
glutDisplayFunc(RenderScene);
glutTimerFunc(10, TimerFunction, 1);
glutMainLoop();
}