• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Sleep(1)が1msでもどってこない。)

Sleep(1)が1msでもどってこない

このQ&Aのポイント
  • ゲームのループ処理中にSleep(1)が1msでもどってこない問題が発生しています。
  • Sleep(1)が2ms程度かかることが原因で、固定された30FPSになりません。
  • より効率的なアイディアを求めています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

え? Windowsの時間の有効精度って10ms単位じゃなかったっけ? いや、最近はそうでもないのかもしれないけど…… 高い精度の時間を使う場合はマルチメディアタイマを使います。 timeSetEventとか…… timeBeginPeriodとかtimeEndPeriodはマルチメディアタイマの機能だから、Sleepとは直接関係ないと思うんだけど、システム全体のタイマ分解能が変わった結果、Sleepの精度も向上するということかな。 でも、それは保証された動作じゃないから、timeSetEventとか使う方が正攻法だと思います。

ordinary_man
質問者

お礼

timeSetEventを使用してきれいに30fpsを作ることができました、 ありがとうございました。 proogramerさんもありがとうございました、 http://howdoyoudo.my-sv.net/ こちらのサイトも非常に役に立ちました。 ありがとうございました。

その他の回答 (2)

回答No.3

magicalpassさんのおっしゃる通り、 正確に時間をはかるのであれば、 timeSetEventで精度のよいコールバックを受け取れます、 また、Sleepとは異なりますが、 QueryPerformanceCounterでμsの計測も可能ですよ。 http://howdoyoudo.my-sv.net/index.php?select=program&option=fps ↑このサイトにサンプルコードが上がっているので参考にしてみてはどうでしょうか?

参考URL:
http://howdoyoudo.my-sv.net/
回答No.1

確かにSleepは精度が悪いので有名です。 timeBeginPeriod(1) timeEndPeriod(1) は使っていますでしょうか? 多少は精度が向上するかもしれません。

関連するQ&A