オープンソースプロジェクトのFPSカウンタクラスを使用していますが、私は奇妙な問題があります。私は東芝衛星(非常に高速)でそれを実行すると、カウンタは60fpsで最大に見える。それは素晴らしいことです。問題ない。私は別のコンピュータ、EEEを持っているし、それはFPSのクロックを高くするだろう。場合によっては132fpsを得ることができ、それははるかに遅いコンピュータです。これにより、メインのコーディングコンピュータでフレームレートが増加するのをテストすることが難しくなります。FPSカウンタの奇妙な問題 - 新しいコンピュータでは60fpsに制限
明らかに、問題はプロセッサ間で異なるコード呼び出しではありません。鋭い目であなたの誰かがそれが何であるかを見つけ出し、代替案を提案できますか?どうもありがとうございます!
ヘッダー:
#ifndef FPS_COUNTER_H
#define FPS_COUNTER_H
class FPS_COUNTER
{
public:
void Update(void); //updates counter - call once per frame
void Shutdown(void); //send max, min, average to log
float GetFps(void) { return fps; }
FPS_COUNTER() : fps(0.0f), lastTime(0.0f), frames(0L), time(0.0f)
{}
~FPS_COUNTER() {}
protected:
float fps;
float lastTime;
long frames;
float time;
};
#endif //FPS_COUNTER_H
CPP
#include <windows.h>
#include "LOG.h"
#include "FPS_COUNTER.h"
extern LOG errorLog;
void FPS_COUNTER::Update(void)
{
//keep track of time lapse and frame count
time = timeGetTime()*0.001f; //get current time in seconds
++frames; //increase frame count
if(time-lastTime>1.0f) //if it has been 1 second
{
fps = frames/(time-lastTime); //update fps number
lastTime= time; //set beginning count
frames = 0L; //reset frames this second
}
}
編集:私はそれはtimeGetTime()の呼び出しでの動作を仮定 - それは、それは全体の私のEERでないように動作させるためにどのような方法があります任意のプロセッサ?
vsyncはおそらく... –
さらに正確な測定にはQueryPerformanceCounterを使用してください。 –
更新機能でデバッグを済ませましたか? ITが1秒間に60回以上呼び出されているかどうかを確認する。コードから、それは60に制限されているようには見えません。私はそれがtimeGetTime()にあるとは思っていませんが、それはちょうど私の直感です。 – Suroot