OpenGL系統設計-畫面播放速率

來源:互聯網
上載者:User

畫面播放速率也是一個熟悉的話題,畫面播放速率通常指動畫運行時每秒的幀數。對於相同的應用來說,畫面播放速率通常是衡量電腦效能高低的一個指標,特別是顯卡。而很多OpenGL的應用由於涉及到3D處理,紋理貼圖等,更可以檢驗顯卡效能的高低。正因為如此,從Quake、Quake2到Quake3一直都是發燒友測試機器和顯卡效能的工具之一。

事實上,只要在程式中加入一個簡單的幾行代碼就可以實現畫面播放速率的測試功能了。

 

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。通過這個程式也可以看到,當處於全螢幕模式時,程式啟動並執行的確要快一些,當然在我們這個簡單的程式中並不那麼明顯。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.