定时器一般用于控制隔一段时间调用某函数
函数原型glutTimerFunc(unsigned int msecs,void(*func)(int value),int value)
说明:msecs为在调用func函数之前要等待的时间(单位:毫秒)
func为被注册的函数,在等待msecs毫秒之后执行
value:为指定将要执行函数的id(value用来传递一个用户自定义的值,根据value的不同情况,可以实现不同的定时器)
使用步骤:
1.注册定时器回调函数
glutTimerFunc(100,MyTimeFunc,1);//这个函数中的msecs值仅仅为第一次调用时的等待时间
2.写自己的定时器回调函数的内部实现:
void MyTimeFunc(int value)
{
//(value用来传递一个用户自定义的值,根据value的不同情况,可以实现不同的定时器)
}
3. 可以在回调函数中更改和绘制对象状态相关的变量,这一步可以有也可以不更改,然后调用glutPostRedisplay函数来实现重绘
glutPostRedisplay:类似于直接调用display函数,不过他更“智能”,在遍历整个消息队列的过程中,只对窗口重绘一次,即只调用一次display
4.最后在回调函数中调用函数glutTimerFunc(50,MyTimeFunc,1);
这相当于循环了,50才是循环等待的时间,1步骤中等待的时间仅仅只是第一次等待的时间
恩,一共就这四个步骤了