2013年8月14日 星期三

[Note] 調整fps in XNA

frame rate 表示 一秒之內產生的動畫畫面數。

就拿遊戲常看見的 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 學習指南

沒有留言:

張貼留言