さて、いよいよ Direct3D を使用してみましょう。プロジェクト等々の下準備は < コードを書く、その前に > を参照してください。下準備が完成すると、見慣れた何もないフォームに、コードを追加していきましょう、といいたいところですが、まずすることがあります。今回は、Sub Main をスタートアップに設定する必要があります。ソリューションエクスプローラのプロジェクトを右クリックして、プロパティをクリック。スタートアップの設定を Sub Main に設定します。では、改めてコードを書いていきましょう。
まずは、Direct3D のデバイスの変数を宣言します。フォームのクラスのメンバ変数として宣言してください。
'Direct3Dのデバイス Private dev As Device = Nothing |
ここで、Device クラスは Direct3D.Device のことを指します ( Microsoft,DirectX.Direct3D
をインポートしているため ) 。
Device クラスは描画処理等々を担当するクラスです ( と勝手に思っています ) 。寿司屋で言えば寿司職人さんのような存在です ( ぇ 。
次に、Direct3D を初期化する関数を追加します。フォームのクラスのメソッドとして宣言してください。
'デバイスの初期化 |
PresentParameters クラスは、コメントにもありますが、Device クラスを生成するときに必要な設定項目のようです。ここでは必要最低限のものを記述してあります
( 多分 ) 。その後いろいろ変更していくかもしれません。
また、Device のコンストラクタの引数ですが、まったく分かりません ( w 。せいぜい分かるのは、DeviceType.Hardware くらいです。とりあえず、MS
の DirectX SDK サンプルと同じ値を渡しているので問題は無いと思います。
この関数は、初期化に成功すると True を、DirectX Exception が発生した場合 ( 初期化に失敗した場合 ) に False を返します。
その次は、描画処理を行うメソッドを追加します。
'シーンのレンダリング(描写) |
Clear メソッドは、バッファや画面などを指定した色で塗りつぶします。つまり、前の画面の映像を消し去るわけです。引数に関して説明ですが、第一引数には、ClearFlags
列挙体を渡します。ClearFlags.Target は画面のクリアを行います。そのほかにも、ClearFlags.ZBuffer はZバッファの初期化、ClearFlags.Stencil
はステンシルバッファの初期化があります。Zバッファとは、ポリゴンの前後関係をうまく描画するために使用するバッファのことです。ポリゴンをただ順番に描画していくと、先に描画してしまったポリゴンの上に、奥のほうにあるポリゴンが重ねて描画され、前後関係がおかしくなってしまうことがありますが、それを防止するための一時的にポリゴンを描画する場所、という風に思ってください。ステンシルバッファは知りませんw
BeginScene と EndScene メソッドは、シーンの開始と終了を行うメソッドです。ポリゴンの描画は、シーンが始まっているときにしかできません。そして、描画が終わるとシーンを終了します。
Present メソッドは、バックバッファに描画したポリゴンを、実際に画面に表示します。
さて、残るは Main メソッドです。
'プロジェクトのスタートアップをSub Main()にしておく |
まず、Sub Main は Shared 修飾詞をつけなければいけないようです。
その次、Form1 クラスは現在のフォームのクラスの名前です。そして、フォームの設定云々をした後、Direct3D の初期化メソッドを呼び出します。False
を返されると終了するようになっています。
While ループですが、frm.Created はおそらくウィンドウを右上の×ボタンを押すと False になると思われます。つまり、フォームが開いている間
( 厳密には違うと思いますが ) は、ループするということを意味します。そして、そのループの中で Render メソッドを呼び出して描画処理を行います。また、
Application.DoEvents メソッドは、半無限ループでは通常マウスポインタが砂時計になってPCが危ない状態になりますが、それを回避してくれます。くわしい説明はこちら。
これで、デバイスの生成を行うプログラムの作成が終了しました。ビルドして実行してみてください。青い画面 ( もしくは指定した色 ) で塗りつぶされたフォームが現れると思います。エラーが出た人は、↓からソースをダウンロードしてどこがまずいか見比べてください。
さて、次回はいよいよポリゴン ( 三角形 ) を描画してみます。ちょっとソースが長くなったりするので、すべての解説はしません。今回作成したソースを改造しながら作っていくので、同じ説明は2度しませんよ。
また、次回あたりからソースを自分なりに改造していろいろ遊んでみてください。新しい発見があるかもしれません。では、今回はここまで。
・今回のソース
download
△ BACK