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");

debug_0001

タイトルバー表示

タイトルバーで表示するには「SetWindowText」関数を使用します。
第一に引数にウィンドウハンドル、第二引数に文字列を指定することで使用可能です。

SetWindowText(hWnd, "タイトル変更");

debug_0002