C++BuilderでDirectX9を使う(D3DX対応)


前書き

DirectX9がリリースされたけど、例によってBorland用のLibファイルは付いてないよね。
で、ここではC++BuilderでDirectX9を使う方法を説明します。

正攻法だと、COFF2OMFを使って、VC++用のLibをBorland用のLibに変換するんだけど、結構メンドクサイよね。
それに、D3DXは変換できないし。
で、D3DX関連はVC++でDLLを作り、それのBorland用インポートライブラリを作るのが正攻法だと思うけど、かなりメンドクサかったりVC++持ってなかったりとか、いろいろ問題があるよね。

しかし、その辺のLibやDLLをAlexey Barkovoyさんが作ってくれました。
(多分ロシアの方でしょう。ドメインサフィックスも.ruだし。)
Alexey Barkovoyさんにハラショーと感謝し、ありがたくこれを使用させていただきましょう。
こちらページの真ん中のあたりに置いてあります。
(ただし、DirectShowには対応していないらしいです。)
その後、対応されたようです。タレコミくださった方ありがとう。


セットアップ

ここからDirectX 9.0 SDKをダウンロードして、インストールします。
(バカでかいので覚悟してダウンロードします。また、VBやC#を使わない人はDirectX 9.0 SDK for C/C++の方が小さいのでこっちにしましょう。)
このときデフォルトで"C:\DXSDK"ってフォルダにインストールされるのであとの説明は"C:\DXSDK"にインストールしたとして説明を進めます。
ついでに、DirectX 9.0 日本語ドキュメントもダウンロードしておきましょう。

このページのDirectX libraries for C++Builderところから"CBuilder_DX90_libs.zip"と"Clootie_DX90_dlls.zip"をダウンロードします。

C:\DXSDK\Libの下にBorlandってフォルダを作成します。

"CBuilder_DX90_libs.zip"を解凍し、解凍した内容を全て"C:\DXSDK\Lib\Borland"にコピーします。

"Clootie_DX90_dlls.zip"を解凍し、解凍した内容をシステムフォルダ(例えば、"C:\Windows\System"とか"C:\WINNT\SYSTEM32")にコピーします。
(このとき、"C:\DXSDK\Lib\Borland"にもコピーしておけば配布イメージを作成するときにどのファイルだったか解りやすくていいです。)

C++Builderを起動し、[プロジェクト]->[オプション]のディレクトリ/条件タブでインクルードパスを設定に、"C:\DXSDK\Include"を追加します。
このとき、"C:\DXSDK\Include"が優先的に参照されるように、一番上に持ってきます。(図参照)

[プロジェクト]->[ファイルを追加]から、使用する.Libファイルを追加します。
(例えば、Direct3Dを使うならD3D9.Lib)


注意点

初めての人は、DirectX 9.0 日本語ドキュメント(directx9_c.chm)の[DirectX Graphics]->[プログラミング ガイド]->[チュートリアル、サンプル、ツール、ヒント]->[チュートリアル]->[チュートリアル 1 : デバイスの作成]から始めるのが良いでしょう。
このとき、C++Builderではウィンドウは勝手に作ってくれるので、[ステップ 1: ウィンドウの作成]を飛ばして[ステップ 2: Direct3D の初期化]から始めましょう。

[ステップ 2: Direct3D の初期化]のCreateDeviceの3つ目の引数には、FormのHandleを渡します。

DirectXにウィンドウのハンドルを求められるときはFormのHandleを渡していればおおむねOKです。


その他

何かわからないことがあれば掲示板メールで質問してくれれば、わかる範囲では回答できるので、気軽にどうぞ。