トップページ > プログラム > 2017年03月24日 > nzFyEvW1

書き込み順位&時間帯一覧

13 位/238 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000001300000004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
ゲームプログラムなら俺に聞け33©2ch.net

書き込みレス一覧

ゲームプログラムなら俺に聞け33©2ch.net
216 :デフォルトの名無しさん[]:2017/03/24(金) 15:01:57.71 ID:nzFyEvW1
FPSを60にするとして、1フレームにかかった時間が1/60sec未満の場合
余った時間をsleepしたい

WindowsだとSleep()のデフォルト精度は10ms程度なので
timeBeginPeriod()とtimeEndPeriod()で高分解化する必要がある訳だが
これらの関数はどこに配置するべきだろうか?

プログラムの先頭にtimeBeginPeriod()、終了時にtimeEndPeriod()だと
例外で落ちた時や、デバッガによる強制終了時にはtimeEndPeriod()が呼ばれない気がする

Sleep()の前後に挟む場合、これらの関数を呼ぶ回数が増大し
ハードへの影響が気になるし

どうするのが一般的何でしょうか?
ゲームプログラムなら俺に聞け33©2ch.net
220 :デフォルトの名無しさん[]:2017/03/24(金) 16:29:29.56 ID:nzFyEvW1
調べたところtimeBeginPeriod()とtimeEndPeriod()を
頻繁に呼ぶと時計がずれるらしいです。
Sleep()の前後に挟むのはNGかも・・

>>219
特定のスレッドに閉じた形でタイマの分解能を変化させることが出来るんですか?
Sleepってのはスレッドを起こす仕組みですよね?
特定のスレッドは1msで起こして、それ以外は16msで起こすとか出来るんでしょうか?
ゲームプログラムなら俺に聞け33©2ch.net
221 :デフォルトの名無しさん[]:2017/03/24(金) 16:33:07.09 ID:nzFyEvW1
std::this_thread::sleep_for()を試したところ
timeBeginPeriod()を置かなくても分解能は1msになっていました。
内部はよくわかりませんが、とりあえずこれで実装します。
どうもです。
ゲームプログラムなら俺に聞け33©2ch.net
222 :デフォルトの名無しさん[]:2017/03/24(金) 16:36:51.08 ID:nzFyEvW1
いや、ちょっと違うなあ・・
>>221は間違っているかもしれません。
スレ汚しすみません。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。