FPSについて
一つ質問なのですが、FPSの計測したいのですが、以下のソースでやるとFPSが57になってしまうのですが。
どうしたらFPSを60にすることが出来るのでしょうか?
多分ここら辺だろうなというところを載せます。
void FPSCount(void){
static DWORD before_time = timeGetTime(); // 以前の時間
DWORD now_time = timeGetTime(); // 現在の時間
static DWORD fps_ctr = 0;
TCHAR buff[80]; // 文字列表示用バッファ
if(now_time - before_time >= 1000){
// 初期化
before_time = now_time;
*fps = fps_ctr;
wsprintf(buff,_T("%d\n"),fps_ctr);
OutputDebugString(buff);
fps_ctr = 0;
}
fps_ctr++;
}
// エントリポイント
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow )
・
・
・
// メッセージループ
while(true)
{
if (PeekMessage(&msg, NULL, 0,0,PM_REMOVE))
{
if (msg.message == WM_QUIT) break;
TranslateMessage(&msg);
DispatchMessage(&msg);
}
else
{
// 同期処理
if (timeGetTime() - dwStart >= 1000.0/FPS)
{
FPSCount();
// 時間更新
dwStart = timeGetTime();
fps=0;
// 描画処理
Draw();
}
}
Sleep(1);
}
timeEndPeriod(1);
// 終了処理
Cleanup();
// 戻り値を返します。
return (int)msg.wParam;
}
}
です。
環境はVC+2005です。