使用glut定时器控制帧率

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

 

在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();
}

 

 

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值