使用glut定时器控制帧率

来源:互联网 发布:ubuntu 查看内存占用 编辑:程序博客网 时间:2024/06/05 22:46

写了个程序,运行很慢,帧率很低,不知道什么原因,以为程序代码太多,执行太慢,经过不断的调试和验证,才弄明白。现在记录一下:

 

在glut函数中:

      通过函数glutDisplayFunc(Draw);来设置需要显示的画面函数,虽然函数中有glutSwapBuffers();和glFlush();函数来刷新输出,但不会不断进行刷新。

 

     如果需要不断刷新,则需要进行如下设置:

     glutDisplayFunc(Draw);

     glutIdleFunc(Draw);  //增加idle时候的函数

 

但是这样的话,如果函数内容不多,则会刷新过快。于是要通过glut的定时器函数来控制帧率,定时进行glutPostRedisplay();

 

例程如下:

使用glutTimerFunc是因為我想要讓他固定每16ms更新畫面一次(FPS大約60)
void main()
{
   glutInitDisplayMode( GLUT_DOUBLE | GLUT_RGBA );
   glutInitWindowSize( 640,480 );
   WinNumber=glutCreateWindow( "Test" );
   glutDisplayFunc(display);
   。。。。。。
   glutTimerFunc(16, OnTimer, 1);
   glutMainLoop();
}
void OnTimer(int value)
{
   alpha++;
   alpha=(alpha%256);
   glutPostRedisplay();
   glutTimerFunc(16, OnTimer, 1);
}
void display()
{
      ..........上略...............

     glutSwapBuffers();
}

 

 

原创粉丝点击