トップページ > 過去ログ > 記事閲覧
画面リフレッシュレートの取得
名前:Dq 日時: 2009/10/04 13:46

DXライブラリ Ver3.0cを利用しています。 Windowモードで、現在のモニタリフレッシュレートを 取得する方法はないでしょうか? ウィンドウモードで、画面のリフレッシュレートを問わず 60fpsでゲームを動作させるため、 ・vsync待ちをする ・経過時間が1/60秒未満の場合Waitを挟む という処理を行っています。 そこで、現在のリフレッシュレートが 60Hzの場合はこの処理を行わず それ以上(75Hzなど)の場合にのみウェイト処理を 行おうとしています。 現在はレジストリ値の直接取得を考えていますが、 この方法がPC共通の処理なのかわからず困っています。 動作するOSが限定されてもかまいませんので、 何か方法をご存じの方、お答え頂ければと思います。

Page: 1 |

Re: 画面リフレッシュレートの取得 ( No.1 )
名前:管理人 日時:2009/10/05 09:47

DXライブラリで Windows2000 以降でのみ有効なリフレッシュレートを取得できる関数 GetRefreshRate があるのですが、DirectX9版でのプログラムが組まれていませんでした その関数の中身のOSチェックや戻り値チェックなどを外したプログラムは以下の通りですので、 よろしければ試してみてください int RefreshRate ; HDC hdc ; hdc = GetDC( GetMainWindowHandle() ) ; // デバイスコンテキストの取得 RefreshRate = GetDeviceCaps( hdc, VREFRESH ) ; // リフレッシュレートの取得 ReleaseDC( GetMainWindowHandle(), hdc ) ; // デバイスコンテキストの解放
Re: 画面リフレッシュレートの取得 ( No.2 )
名前:Dq(解決) 日時:2009/10/07 20:46

管理人さんの方法で、 60Hzで60,75Hzで75の値を得られました。 レジストリを参照するなどの手間も全く不要でよかったです。 迅速で適切な回答、本当にありがとうございました。

Page: 1 |