こんにちは。
前回までは、プレイヤーが操作するキーボードやマウスの状態をプログラム側で検知する手段として、DirectInputを扱ってきました。
以前まで作成していた部分は、ゲームライブラリでいう入力を受け付けるところの「部門1」でした。今回から制作を始めていく機能は、出力の大部分を担う画面への描画機能であります。Direct3D 9という機能を使って描画を実現していこうと思います。
1、SharpDXの準備+ウィンドウの表示
描画編からは、ウィンドウフォームを扱っていく必要が有るためにプロジェクトに若干の変更を加える必要があります。
具体的には、「No.3」のプロジェクトの作成を「Windowsフォームアプリケーション」にするだけなのですが、今回はプロジェクトごと配布してしまおうと思います。
2、Direct3D 9の流れ
これからは、Direct3D 9を利用して画面にいろいろ書いていくわけですが、その前に描画するために必要な流れを説明していきます。
今回はこんなかんじで終わりにします。次回以降で、一つ一つの詳しい説明をしていきます。実践編は、もうちょっとあとになるかもね。
前回までは、プレイヤーが操作するキーボードやマウスの状態をプログラム側で検知する手段として、DirectInputを扱ってきました。
以前まで作成していた部分は、ゲームライブラリでいう入力を受け付けるところの「部門1」でした。今回から制作を始めていく機能は、出力の大部分を担う画面への描画機能であります。Direct3D 9という機能を使って描画を実現していこうと思います。
1、SharpDXの準備+ウィンドウの表示
描画編からは、ウィンドウフォームを扱っていく必要が有るためにプロジェクトに若干の変更を加える必要があります。
具体的には、「No.3」のプロジェクトの作成を「Windowsフォームアプリケーション」にするだけなのですが、今回はプロジェクトごと配布してしまおうと思います。
- DirectX 9をインストールしていないPCの場合は、「DirectX End-User Runtimes (June 2010)
」をMicrosoftのページからダウンロードしてインストールしてください。
※「DirectX SDK」は、必要に応じてインストールすればよいです - SharpDXをダウンロードしたことがない場合は、「SharpDXのページ:http://sharpdx.org/」の「Download」ページの中ほどにある「SharpDX-Full-2.5.0.exe」をダウンロードしてインストールしてください。インストール中のオプションで必ず「SharpDX Runtime Assemblies」は選ぶようにしてください。
- VS(Visual Studio)側で「Windows フォームアプリケーション」プロジェクトを作成する
- VSのメニューバー中の「プロジェクト」→「参照の追加」をクリックする
- 「参照の追加」ダイアログ中の「参照」タブをクリックする
- SharpDXの「DirectX11-net40」というフォルダまで行き着く
※ 多くの場合、「DirectX11-net40」フォルダは「C:\Program Files (x86)\SharpDX\Bin」にインストールされます。また、スタートメニュー中の「SharpDX」→「SharpDX Runtime Assemblies」→「Bin」と進んでいくことでも見つけられます - 「参照の追加」ダイアログで、そのフォルダ中の「SharpDX.dll」「SharpDX.DirectInput.dll」「SharpDX.Direct3D9.dll」「SharpDX.DirectSound.dll」の4つを選んで「OK」ボタンを押します。
2、Direct3D 9の流れ
これからは、Direct3D 9を利用して画面にいろいろ書いていくわけですが、その前に描画するために必要な流れを説明していきます。
- 描画用のウィンドウを用意する
描画した内容を画面に出す領域が必要です。当面は、System.Windows.Forms名前空間にあるFormクラスを使ってウィンドウを用意していきます。 - 描画デバイス(SharpDX.Direct3D9.Device)を作成する
描画デバイスというのは、Direct3D 9の中核を司るクラスでこれを通じて画面に描画したり画像を読み込んだりしていきます。今後は単にDeviceと書いていきます。 - 描画するために必要なリソースを読み込み・作成する
Deviceを通して、描画したい絵や写真をファイルから読み込んだり、CGモデルを読み込んだりします。 - 描画開始をDeviceに通知する
描画を始める前にDeviceに知らせておく必要があります。Device.BeginScene()メソッドを使います。 - 描画をしていく
Deviceに描画命令を送って画面に描画をしていきます。ところでDirect3D 9は、三角ポリゴン(頂点を3つつないで作った三角面)しか描画単位を持たないため、すべての描画命令は「このポリゴンを描け!」といったものになります。 - 描画終了をDeviceに通知して画面に反映させる
「5.」で描いていたポリゴンたちを、画面に反映させます。その際には、Device.EndScene()とDevice.Present()を順に呼びます。 - 今までに取得したリソースすべてとDeviceを開放する
「3.」で読み込んだリソースの多くは、グラフィックボードのメモリに格納されるため必要がなくなった時点で開放してあげる必要があります。
ざっとこんなものでしょうか。これらがマスターできれば、画面に色んな物を書いていくことができます。
今回はこんなかんじで終わりにします。次回以降で、一つ一つの詳しい説明をしていきます。実践編は、もうちょっとあとになるかもね。