SewiGの日記
2006-06-16 [金] [長年日記]
■ [Programming][C#] C#で2D Programming on Direct3D (1)
Managed DirectXを使えばC#でもDirectXが扱えます。.NET Frameworkのおいしい仕様とDirectXの豊富な機能が使えるのは便利。
環境構築
- VisualStudio 2005や.NET Frameworkといった開発環境をインストール
- DirectX SDKの最新版をインストール
- PATHを通す
DirectX SDKをインストールするときにVisualStudioの設定も行われるので順番は間違えないようにしましょう。PATHは例えば、「C:\Program Files\Microsoft Visual Studio 8\VC\bin」を追加しておくと、コマンドプロンプトでvcvars32を実行するだけで、いろいろと設定できます。
C#でDirectXの初期化
まず、上記のソースコードをコンパイルして実行してみましょう。C#でManaged DirectXのコンパイルをする方法は次の通りです。
- コマンドラインでコンパイルする場合
> csc /t:winexe /lib:"C:\WINDOWS\Microsoft.NET\DirectX for Managed Code\1.0.2902.0" /r:Microsoft.DirectX.Direct3D.dll,Microsoft.DirectX.dll MainApplication.cs Window.cs
"C:\WINDOWS\Microsoft.NET\DirectX for Managed Code\1.0.2902.0"の部分は各自の環境に書き換えてください。「/t:winexe」でコンパイルしたら、GUIプログラミングでコマンドプロンプトが出ません。
- VisualStudio 2005の場合
プロジェクトの「参照の追加」で、「.NET」タブから「Microsoft.DirectX.Direct3D.dll」と「Microsoft.DirectX.dll」を選択します。それからプロジェクトをビルドします。
実行ファイルを起動して、白いウィンドウが表示されれば成功です。
解説
まずは、名前空間に以下を追加。
using Microsoft.DirectX; using Microsoft.DirectX.Direct3D;
それから、Deviceオブジェクトの生成に必要なパラメータはPresentParametersです。PresentParameters.Windowedをfalseにするとフルスクリーンモードになります。PresentParameters.SwapEffectはいろいろな表示アルゴリズムから最適なものが選択されます。PresentParameters.BackBuffer〜でバックバッファのパラメータが設定できます。
パラメータが用意できたら、Deviceオブジェクトの生成。グラフィックカードの種類によってモードが変わります。ハードウェアを利用する方法から順に生成を試みます。
あとは、OnPaint()で描画を行います。次回、画像を描画する方法について考えます。
Deviceオブジェクトは使い終わったらDisposeで破棄します。