FPS表示方法
概要
FPSはFramesPerSecondの略でゲームなどで1秒間に画面を更新する回数のことです。
例えば60FPSの場合は1秒間で60回画面を切り替えます。
デバッグ利用
FPSをデバッグで利用する場合は、毎秒設定したFPSの値で更新されているかを確認し、
「常に設定値に達している」「時折達していない」「常に達していない」などを調べます。
「時折達していない」「常に達していない」場合、処理が1周期の時間を超えているので
原因となる部分をコードから探し出して修正を行います。
※「時折達していない」はゲームのロード中等、FPSが極端に低下する箇所があるので、
アプリ上で支障があるかないかを判断し、修正を行います。
サンプル
「実装方法」「表示方法」を実装したサンプルはこちらからダウンロードできます。
実装方法
実装方法はFPS処理を行っているループ処理の中にフレームカウント処理を追加します。
そして、ループごとの時間を計測して時間が1秒を超えた際に
カウントしたカウントを0に戻します。
この時にカウントした値を表示するようにすると毎秒のFPS数がわかります。
コード例
static DWORD prev_time = timeGetTime(); // 前回の時間
static int frame_count = 0; // フレームカウント
DWORD now_time = timeGetTime(); // 今回のフレームの時間
frame_count++; // フレーム数をカウントする
// 経過時間が1秒を超えたらカウントと時間をリセット
if (now_time - prev_time >= 1000)
{
char str[128];
prev_time = now_time;
frame_count = 0;
}
表示方法
表示方法はVisualStudioなどの開発環境のコンソール部分に表示する方法や
画面に表示する方法、PCアプリではタイトルバーに表示する方法等があります。
コンソール表示
VisualStudioのコンソールへの表示は「OutputDebugString」関数を使用します。
引数は文字列を指定するだけで使用可能です。
OutputDebugString("コンソールで表示\n");
タイトルバー表示
タイトルバーで表示するには「SetWindowText」関数を使用します。
第一に引数にウィンドウハンドル、第二引数に文字列を指定することで使用可能です。
SetWindowText(hWnd, "タイトル変更");