DirectX9を使用している人は割とおなじみの SDKをインストールすると使用できる DirectX DebugRuntime というものがあります。
これは使用方法が不味いときにエラーを出力してくれたり、冗長な設定を行っているときに警告を発してくれたりととても役立つツールです。
ちょっと厄介なのは、SDKのインストールが必須で、再配布を行えないところとVista以降では管理者権限を必要とするようでUACによる暗転が発動してしまうことです。
今回、開発者が一時的にSDKをインストールしていないターゲットで問題解決のためにデバッグランタイムを使用するという想定で、
ターゲットでデバッグランタイムを使用可能にするライブラリを作成しました。
こちらからダウンロードしてください。d3d9_drt_v100
開発者の環境から必要なDLL(d3d9d.dll, XPならd3dx9_32,33.dllも)をアプリケーションexeと同じ場所にコピーするという手間と、ライブラリを組み込むという手間はかかりますが、デバッグランタイムを使用することが出来るようになります。
メリット/デメリット
- 管理者権限が不要
- SDKのインストール無しにデバッグランタイムが使える
- プログラム主導でデバッグランタイムのON/OFFが(起動時に)設定できる
- 安定動作しないかも。動作チェックが十分ではない
- 再配布禁止の物を使えるようにするという性質上、公開がぁゃιぃ。公開停止要求受けたら閉じます
使用方法
プログラムは以下のようになります。Direct3DCreate9の前後で関数を呼び出します。
D3DDRT_CONFIG config; config.DebugLevel = 4; // デバッグレベル InitializeD3DDebugRuntime( &config ); g_pD3D9 = Direct3DCreate9( D3D_SDK_VERSION ); StartD3DDebugRuntime();
不具合とか
発見したらコメントの方で報告頂けると、修正を検討することが出来ます。
動作環境
ターゲット環境としては以下のものを想定しています。
調査した結果、Windows8では動きません!! 追記しました 2013/06/04
- WindowsXP
- WindowsVista
- Windows7
Windows8 (まだ未検証. レポート求む)
ライブラリのリンクについては、下記のツールで確認しています。
- VisualStudio2010 Professional SP1
- VisualStudio2012 Professional
おそらく VisualStudio2010(SPなし), VisualStudio2012 Update XX らでも問題なく動作すると思います。
また、VisualStudio2008でもリンクは正常に出来る気がしています。
注意事項
WindowsVista以降の環境から d3d9d.dllをコピーして、WindowsXP環境へ持って行くことはできません。
これはVista以降の環境でインストールされるd3d9d.dllがVista以降専用のもののためです。
一度別のWindowsXP環境にDirectX SDKをインストールして、d3d9d.dllを取得するようにしてください。
「プロシージャエントリポイント _ftol2_sseがダイナミックリンクライブラリ msvcrt.dll から見つかりませんでした」というようなエラーがWindowsXPで表示された場合、このケースに該当していると考えられます。
最後に
機能として足りていないところもあるかと思いますので、ひとまずは要望などありましたらコメントの方にお願い致します。
開発において本ライブラリが役立ってくれることを願います。