日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[译]GLUT教程 - 每秒帧数

發布時間:2024/4/14 编程问答 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [译]GLUT教程 - 每秒帧数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Lighthouse3d.com >> GLUT Tutorial >> Extras >>?Frames per Second

?

你的程序實際上跑得多快? 有時我們我們改了一個小地方卻不確定效果有沒有表現出來,即它們如何影響每秒顯示的幀數.本節我們會來看怎么使用GLUT來計算出每秒的幀數.注意這不能看作是真是測試數據,它只是個參考值.

GLUT提供一個函數來查詢系統中的很多特性,其中之一是獲取調用glutInit函數時使用的毫秒數.該函數是glutGet,原型如下:

?

int glutGet(GLenum state);

state - 指定我們需要的值

?

該函數可以用于很多方面,例如獲取窗體坐標或者獲取OpenGL的緩沖深度.本節我們用它來獲取調用glutInit函數時使用的毫秒數,保存在GLUT_ELAPSED_TIME傳參中.

?

int time;...time = glutGet(GLUT_ELAPSED_TIME);

?

現在用該函數來計算程序每秒的幀數.幀與幀之間的速率是變化的,因為并非所有幀都用相同的渲染時間,因為操作系統不是只有你的程序在運行.操作系統取得它的通行權,然后鏡頭隨著渲染的物體而改變.因此我們將會避免計算每一幀的速率,而去計算每秒大概的幀數.這樣會提供一個更精確的數值,雖然它也仍然只是一個均值.

先聲明三個變量: frame, time和timebase, 其中timebase和frame初始化為0.

int frame=0,time,timebase=0;

這三個變量作用是:

frame - 我們從開始統計幀速率到現在的幀數

time - 當然的毫秒數

timebase - 我們從開始統計幀速率到現在的時間

?

下面這段代碼,只要放到空閑事件的處理函數中,就會實現上述效果:

...frame++;time=glutGet(GLUT_ELAPSED_TIME);if (time - timebase > 1000) {fps = frame*1000.0/(time-timebase));timebase = time;frame = 0;}...

?

我們從增加幀數開始,例如增加各種幀.然后記錄當前事件.然后我們對比timebase來檢查讀秒,例如看time和timebase是否相差1000毫秒.如果還未到時間,會先跳過計算部分.然而即使超過了1秒,我們也會進行計算.

從time和timebase的差是提供了開始統計幀數到停止所經過的毫秒數.該值除以1000就是所經過的秒數.剩下要做是把該秒數值乘以從開始統計幀數到停止所渲染的幀數,就得到了每秒的幀數.最后我們重置timebase到當前的毫秒值,把frame置零.

注意,如果程序的timebase為0,就要先等1秒來等待初始化該值.一開始的初始值會有誤導,因為該值里面包含了初始化窗體消耗的時間.你測試一下就會發現該值會遠比實際幀速率低.

如果你想輸出每秒的幀數,你可以使用以下代碼:

...frame++;time=glutGet(GLUT_ELAPSED_TIME);if (time - timebase > 1000) {sprintf(s,"FPS:%4.2f",frame*1000.0/(time-timebase));timebase = time;frame = 0;}glColor3f(0.0f,1.0f,1.0f);glPushMatrix();glLoadIdentity();setOrthographicProjection();renderBitmapString(30,35,(void *)font,s);glPopMatrix();restorePerspectiveProjection();...

?

轉載于:https://www.cnblogs.com/live41/p/3393941.html

總結

以上是生活随笔為你收集整理的[译]GLUT教程 - 每秒帧数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。