トップページ > 記事閲覧
DxLib_Init関数によるミリ秒の精度
名前:mysql 日時: 2014/03/21 23:21

現在、リズムゲームを制作していて、Sleepの精度を上げようとtimeBeginPeriod関数を使用するか迷っていたのですが、ほかの掲示板で、DxLib_Init関数で精度は1ミリ秒に設定されると指摘されました。(timeBeginPeriod関数を使う必要はない。) これは本当なのでしょうか?
メンテ

Page: 1 |

Re: DxLib_Init関数によるミリ秒の精度 ( No.1 )
名前:管理人 日時:2014/03/22 01:09

1ミリ秒かどうかはOS次第ですが、最高精度にしているのは確かです ( DxWindow.cpp の 8108行目で行っています ) http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース
メンテ
Re: DxLib_Init関数によるミリ秒の精度 ( No.2 )
名前:mysql 日時:2014/03/22 01:26

windows7(64Bit)を使用しているのですが、最高精度を調べることってできますか? OS次第ということはWindows7(32Bit)、Vista、XPでは多少なりのズレがあるということだと思うのでやはり、配布して様々なOSで対応できるためにtimeBeginPeriod関数を使ったほうがいいでしょうか?
メンテ
Re: DxLib_Init関数によるミリ秒の精度 ( No.3 )
名前:管理人 日時:2014/03/22 02:40

timeGetDevCaps で最高精度を調べることができます > OS次第ということはWindows7(32Bit)、Vista、XPでは多少なりのズレが > あるということだと思うので OS毎に最高精度にズレがあるかどうかはわかりません ただ少なくとも WindowsXP あたりまでは timeBeginPeriod で最高精度にしない状態では DXライブラリで求める精度になっていなかったので、timeBeginPeriod で最高精度に するようにしています > やはり、配布して様々なOSで対応できるためにtimeBeginPeriod関数を使ったほうがいいでしょうか? DXライブラリを使用する以上はDXライブラリの中で timeBeginPerio を使用しているので、 mysqlさんのプログラムでも timeBeginPerio を使用する必要はありません
メンテ
Re: DxLib_Init関数によるミリ秒の精度 ( No.4 )
名前:mysql 日時:2014/03/22 02:49

> DXライブラリを使用する以上はDXライブラリの中で timeBeginPerio を使用しているので とありますが、timeBeginPeriod(1);のことでしょうか? そのOSの最高精度に設定していて、その精度が3ミリ秒とかだったらtimeBeginPeriod(1);にして1ミリ秒にした方がよいと思うのですが・・・ (たとえtimeBeginPeriod(1);とやってもそのOSの最高精度になってしまうのでしょうか?)
メンテ
Re: DxLib_Init関数によるミリ秒の精度 ( No.5 )
名前:管理人 日時:2014/03/22 02:51

> (たとえtimeBeginPeriod(1);とやってもそのOSの最高精度になってしまうのでしょうか?) それはわかりません、気になるのでしたら mysqlさんの方で timeBeginPeriod(1); を 実行されるのが良いと思います
メンテ
Re: DxLib_Init関数によるミリ秒の精度 ( No.6 )
名前:mysql 日時:2014/03/22 03:01

> それはわかりません、気になるのでしたら mysqlさんの方で timeBeginPeriod(1); を 実行されるのが良いと思います 試して実行してみました。 リズムゲームを制作しているために敏感な箇所(精度は)ではあるのですが、少しやりやすくなった気がしてなりません・・(timeBeginPeriod(1);を書いたほうが。)微妙な感覚ですが・・・ ここでDXライブラリでtimeBeginPeriodしていて、更に自分でtimeBeginPeriod(1)したら余計にバッテリーなど消費してしまうのでしょうか?
メンテ
Re: DxLib_Init関数によるミリ秒の精度 ( No.7 )
名前:管理人 日時:2014/03/22 03:22

> リズムゲームを制作しているために敏感な箇所(精度は)ではあるのですが、 > 少しやりやすくなった気がしてなりません・・(timeBeginPeriod(1);を書いたほうが。)微妙な感覚ですが・・・ timeGetDevCaps で取得できる TIMECAPS 構造体のメンバ変数 wPeriodMin の値を確認してみてください DXライブラリではこの値を timeBeginPerio に渡していますので、wPeriodMin の値が 1 でしたら 気のせいということになります > ここでDXライブラリでtimeBeginPeriodしていて、更に自分でtimeBeginPeriod(1)したら余計にバッテリーなど消費してしまうのでしょうか? 個人的には timeGetDevCaps で得られる最高精度よりも小さい値を timeBeginPeriod に渡しても効果は 無いと思いますが、もし timeGetDevCaps で得られる最高精度よりも小さい値を timeBeginPeriod に 渡すことに効果がある場合はバッテリーの消費量はより多くなると思います
メンテ
Re: DxLib_Init関数によるミリ秒の精度 ( No.8 )
名前:mysql 日時:2014/03/22 03:44

> timeGetDevCaps で取得できる TIMECAPS 構造体のメンバ変数 wPeriodMin の値を確認してみてください DXライブラリではこの値を timeBeginPerio に渡していますので、wPeriodMin の値が 1 でしたら 気のせいということになります 気のせいでした・・・・しっかり「1」を返しました・・ お手数おかけしました。こんな遅くに返信ありがとうございます。 解決とさせていただきます。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存