- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Sleep(1)が1msでもどってこない。)
Sleep(1)が1msでもどってこない
このQ&Aのポイント
- ゲームのループ処理中にSleep(1)が1msでもどってこない問題が発生しています。
- Sleep(1)が2ms程度かかることが原因で、固定された30FPSになりません。
- より効率的なアイディアを求めています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
え? Windowsの時間の有効精度って10ms単位じゃなかったっけ? いや、最近はそうでもないのかもしれないけど…… 高い精度の時間を使う場合はマルチメディアタイマを使います。 timeSetEventとか…… timeBeginPeriodとかtimeEndPeriodはマルチメディアタイマの機能だから、Sleepとは直接関係ないと思うんだけど、システム全体のタイマ分解能が変わった結果、Sleepの精度も向上するということかな。 でも、それは保証された動作じゃないから、timeSetEventとか使う方が正攻法だと思います。
その他の回答 (2)
- proogramer
- ベストアンサー率0% (0/1)
回答No.3
magicalpassさんのおっしゃる通り、 正確に時間をはかるのであれば、 timeSetEventで精度のよいコールバックを受け取れます、 また、Sleepとは異なりますが、 QueryPerformanceCounterでμsの計測も可能ですよ。 http://howdoyoudo.my-sv.net/index.php?select=program&option=fps ↑このサイトにサンプルコードが上がっているので参考にしてみてはどうでしょうか?
- 参考URL:
- http://howdoyoudo.my-sv.net/
- proogramer
- ベストアンサー率0% (0/1)
回答No.1
確かにSleepは精度が悪いので有名です。 timeBeginPeriod(1) timeEndPeriod(1) は使っていますでしょうか? 多少は精度が向上するかもしれません。
お礼
timeSetEventを使用してきれいに30fpsを作ることができました、 ありがとうございました。 proogramerさんもありがとうございました、 http://howdoyoudo.my-sv.net/ こちらのサイトも非常に役に立ちました。 ありがとうございました。