就拿遊戲常看見的 fps = 60 即為 每秒裡面有 60 個 frame 的產生。
在XNA 裡面,
基本上預設值皆為 60 FPS
然而我們可以透過 TargetElapsedTime 來調整 frame rate。
我們在建構者裡面可以加入如以下程式碼:
TargetElapsedTime = new TimeSpan(0, 0, 0, 0, 50);
上述即表示,每50微秒更新一次 -> 意即 1000/ 50 = 20 (fps )
但是在整體上會變成以 fps 20 去運作。
如果我們不想要整個改變,而是只有產生動畫,或者是某事件發生的時候
才要去改變fps ,該怎麼做呢?
一開始宣告兩個時間變數。
int timeSinceLastFrame = 0;
int millisecondsPerFrame = 50;
第一個用來追蹤上一個frame 過了多少時間。
第二個用來追蹤當前frame 要等待多少時間。
然而在 Update () 函式裡面,
我們可以加入如以下程式碼 :
timeSinceLastFrame += gameTime.ElapsedGameTime.Milliseconds;
if (timeSinceLastFrame > millisecondsPerFrame)
{
timeSinceLastFrame-= millisecondsPerFrame;
//
// 事件發生或是要設計動作,繪圖更新的部分
//
}
即可以動態調整fps ,不用整個改變fps 了。
資料來源 : XNA 4.0 學習指南
沒有留言:
張貼留言