ページ 1 / 1
FPSを表示する際のwait処理の質問
Posted: 2010年8月23日(月) 22:21
by ezi
「C言語ゲームプログラミングの館」の
「s6. FPSを表示する。」内で
wait_fanc関数の意味がよくわかりません。
各フレーム中で時間を調整して待ちを発生させているようですが、
ScreenFlip関数内で調整してくれるので必要ない気がします。
何か意図があるのでしょうか?
つたない質問ですがよろしくお願いします。
Re:FPSを表示する際のwait処理の質問
Posted: 2010年8月23日(月) 22:35
by Dixq (管理人)
> eziさん
こんにちは。
確かに60Hzのモニタを使っていれば必要ないかもしれません。
では試しにご自分のモニタのリフレッシュレートを70や80に変更して見て下さい。
結果どうなるでしょうか?
もしゲーム内で、弾が1フレームに4ピクセル進むような計算がなされていたとすると、
60Hzのモニタを使っている場合や80Hzのモニタを使っている場合ではスピードが異なる事になります。
しかしユーザーに「プレイ前にモニタのリフレッシュレートを60Hzに変更してから遊んでください」というのは現実的ではありません。
ということでゲーム側で待機処理が必要です。
しかしsleep関数には誤差があり、このままでは正確に60FPSにはならないでしょう。
もし厳密な計算が必要であれば龍神録プログラミングの館をご覧ください。
http://dixq.net/rp/43.html
Re:FPSを表示する際のwait処理の質問
Posted: 2010年8月23日(月) 23:22
by ezi
Dixqさん
こんにちはです。
なるほど!
ScreenFlip関数内で調整してくれるのは
次のフレームまでの待ち時間なので
フレームレートが60Hzより高い時はその画像のまま
次フレームまで待ってた方が良い。
その為にwait_fanc関数ある訳ですね。
解りました!有難う御座います。
ps:
ブログを拝見した所、本を執筆なさっているようで、
出版を楽しみにしております。
Re:FPSを表示する際のwait処理の質問
Posted: 2010年8月23日(月) 23:23
by ezi
解決マークつけ忘れました^^;