OpenGL系统设计-帧速率

帧速率也是一个熟悉的话题,帧速率通常指动画运行时每秒的帧数。对于相同的应用来说,帧速率通常是衡量计算机性能高低的一个指标,特别是显卡。而很多OpenGL的应用由于涉及到3D处理,纹理贴图等,更可以检验显卡性能的高低。正因为如此,从QuakeQuake2Quake3一直都是发烧友测试机器和显卡性能的工具之一。

事实上,只要在程序中加入一个简单的几行代码就可以实现帧速率的测试功能了。

 

TCHAR szFPS[MAX_LOADSTRING];    //表示帧速率字符串

void CalculateFrameRate()

{

   

    static float framesPerSecond    = 0.0f;     //帧计数器

    static float lastTime           = 0.0f;

 

    //将毫秒转换成秒

    float currentTime = GetTickCount() * 0.001f;               

 

    // 累加帧计数器

    ++framesPerSecond;

 

    // 如果当前时间和上次记录的时间差大于1

    if( currentTime - lastTime > 1.0f )

    {

        //将上一次的记录时间设成当前时间

        lastTime = currentTime;

       

        //记入szFPS全局变量

        sprintf(szFPS, "Current Frames Per Second: %d", int(framesPerSecond));

 

        // 对帧计数器进行复位

        framesPerSecond = 0;

    }

}

 

 

int glMain(GLvoid)

{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glLoadIdentity();

    glTranslatef(-0.5, -0.5, -3.5);

   

    //使用这种方法取代前面的通过WM_KEYDOWN消息带的wParam来判断键盘消息

    if(keys[VK_ESCAPE])             //ESC键退出

        return FALSE;

   

    if (keys[VK_F1])                        //F1键切换窗口模式

    {

        keys[VK_F1]=FALSE;                 

        glShutdown();                      

        fullscreen=!fullscreen;            

        if (!InitInstance(WIDTH, HEIGHT, BITS))

        {

            return 0;                      

        }

    }

   

    //绘制1000个三角形

for(int i=0; i<1000; i++)

    {

       

        glBegin(GL_TRIANGLES);

        glColor3ub(rand()%256, rand()%256, rand()%256);

        glVertex3s(rand()%3, rand()%3, 0);

        glColor3ub(rand()%256, rand()%256, rand()%256);

        glVertex3s(rand()%3, rand()%3, 0);

        glColor3ub(rand()%256, rand()%256, rand()%256);

        glVertex3s(rand()%3, rand()%3, 0);

        glEnd();

    }

 

    CalculateFrameRate();

    glColor3f(1.0, 0.0, 0.0);

    glRasterPos2f(-1.0f, 0.35f);

    glPrint(g_Base, szFPS);

   

    SwapBuffers(g_hDC);

    return TRUE;

}

 

程序运行效果如图11-2所示,在320X240X16位色的窗口模式下,在PIII 866的机器上帧速率基本稳定在22左右,在全屏模式下稳定在23。通过这个程序也可以看到,当处于全屏模式时,程序运行的的确要快一些,当然在我们这个简单的程序中并不那么明显。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值