ゲームやデモ等、リアルタイムに処理が進むものでは、「メインループ」というものがあって、
それが何度も呼び出されることによって処理が進んでいきます。
メインループを一度呼び出すことを「フレーム」ということにします。
...ということで、FPSの話に戻ります。
このFPSというもの、「何に使うの?」と思われると思います。
何に使うかというと...
「一秒あたりのフレーム数」ということですから、そう難しいことではありません。
一秒間に、メインループが何回呼び出されたかを数えるだけでOKです。
また、次のように考えることも出来ます。
1フレーム(メインループを一度呼び出すの)に、これだけ時間がかかったんだから、
一秒あたりでは、これぐらいだろう、という考え方です。
「比」で考えるんですね。式にすると...
(1フレームにかかった時間を「tミリ秒」、求めるFPSを「X フレーム」とすると)
1000 [ms]:t [ms] = X [Frame]:1 [Frame]
こんな感じになるのが、おわかりいただけるでしょうか。
実際にプログラムを組むとなると、こちらの方が「コードがきれい」「コードが短い」という
利点があります。そのくせ、僕はこちらをなぜか使用していません(^^;)
特に意味はないのですが......。
で、「1フレームにかかった時間」の測り方ですが、これも簡単です。
毎回メインループが呼び出されるときに時間をとり、1フレーム前に呼び出されたときの時間を
引いてやればいいんです。式にすると....
1フレームにかかった時間=今の時間 - 前回メインループを呼び出したときの時間
となります。やっぱり簡単でした。
さて、ここまで見てきて、分からないところがありますね。
それは、「時間の測り方はわからない」ということです。
いくら「一秒間あたりに...」とかいってみても「一秒間」を測れなければ、
意味がないんですね。というわけで、時間の測り方。
Windowsには、Windowsが起動してからの時間をミリ単位で知ることが出来る、
「getTickCount」と「timeGetTime」という関数が用意されています。
これを使えば、時間を知ることが出来ます。これは、FPSを調べるとき以外にも、
よく使う、いわゆる「使える」ものなので、覚えておきたほうがいいでしょう。
また、timeGetTimeを使用する場合には、「MMSystem」をインクルードする必要があります。
これで、FPSの調べ方が分かっていただけたと思います。
次は、パソコンのスペックに依存されないゲームを作るための
「実時間」について見ていきます。