所以我在想,如果我是正確的計算我的FPS:我正確計算我的FPS嗎?
Uint32 delayFrom(float startTime, float endTime){
return(endTime - startTime);
}
int main(){
int numFrames = 0;
Uint32 startTime = SDL_GetTicks();
while(!done){
frameTime = 0;
float fps = (numFrames/(float)(SDL_GetTicks() - startTime))*1000;
cout << fps << endl;
SDL_Delay(delayFrom(frameTime, 1/60));
++numFrames;
}
}
@Erik:我理解的很好 - 你檢查每一幀,如果它是第一幀?如果是這樣,我不喜歡它...我會用一些其他的構造或只是讓第一幀中的fps計算錯誤(如果當然可以接受) – relaxxx 2011-04-10 19:58:49
@relaxxx:好吧,在分割之前檢查elapsedMS或elapsedSeconds - 除以0是有點令人討厭,並且與典型遊戲框架中完成的工作相比,0的單個測試根本無關緊要。但是,是的,當然可以編寫循環來避免這種檢查 - 如果你願意冒險/確保第一幀不能在0ms完成 – Erik 2011-04-10 20:03:27
@Erik我只是因爲這些檢查會導致非常可怕代碼...這當然不是那麼糟糕,但是我看過一次代碼,每個遊戲框架中的作者都檢查了if(introMoviePlayed())和其他東西...... :) – relaxxx 2011-04-10 20:12:33