Mission3: Direct3D を実装する。


さて、Direct3D を実装してみよう。

【ステップ1】

 今度は、Mission2 の続きである。
 VisualC++ の画面は、以下のようになっているはずである。

【Misson2 画面】
図1 Mission2画面


【ステップ2】

 プロジェクトを改造して行く。 以下の指令に従うべし。

【ステップ2−1 ファイルのダウンロード】
解説
まず、左のリストより6つのファイルを、
mission1 プロジェクトのあるディレクトリに
ダウンロードして下さい。
ダウンロード


【ステップ2−2 ファイルをプロジェクトへ追加】
解説
ワークスペースに、
先ほどの、
  • DeviceInformation.cpp
  • DeviceInformation.h
  • GameMain.cpp
  • GameMain.h
  • HighResTimer.cpp
  • HighResTimer.h
を追加。
具体的には、左図の mission1ファイル という部分
を右クリック。

この様子をステップ2−3に示します。
図2 ワークスペース


【ステップ2−3 ファイルの追加その2】
解説
先ほど記したように、misson1ファイル という
部分をクリックすると、図3のような
ポップアップメニューが出てきます。

この中から、

ファイルをプロジェクトへ追加

を選びます。
図3 メニュー操作


【ステップ2−4 ファイルの追加その3】
解説
左のようにして、
DeviceInformation.cpp
DeviceInformation.h
GameMain.cpp
GameMain.h
HighResTimer.cpp
HighResTimer.h
の6つのファイルを選択し、OK ボタンを押すと
プロジェクトにファイルが追加されます。
図4 ファイル選択


【ステップ2−5 ライブラリのリンク】
解説
次に、「プロジェクト」メニューから
「設定」を選ぶ。

すると、ステップ2−11で説明する、図6の画面が出てきた
はずだ。

次へすすむ。
図5 設定メニュー


【ステップ2−6 ライブラリのリンク Part2】
解説
ウインドウの上部に、
"一般","デバッグ","C/C++"・・・・
といった表記があるが、「リンク」タブをクリック。

すると左の画面が出てきたはずだ、

オブジェクト/ライブラリ/モジュールという欄に、

d3d8.lib d3dx8.lib

と三つのファイル名を指定しておく。

できたら、「OK」ボタンをクリックしよう。

図6 リンカ設定


【ステップ2−7 アプリケーションクラスの改造 Part1】
解説
ワークスペースより、"mission1.cpp"
をダブルクリックする。
すると左のような画面になったはずだ。

続いて、

#include "mission1.h"

の後に、

#include <d3d8.h>
#include <d3dx8.h>
#include "GameMain.h"
の三行を書き足す。

さらに、以下の二行を削除する。

#include "mission1Doc.h"
#include "mission1View.h"

図7 アプリケーションクラスの改造


変更前 変更後
図8 アプリケーションクラスの改造点



【ステップ2−8 InitInstance の改造 Part1】
解説
再度 ClassWizard だ。

クラス名に CMission1App を選択する。

メッセージに、InitInstance を選択する。

このプログラムは、Mission2 で改造したものだが、
次のステップで、一行書き加える。
図9 InitInstance 再改造 Part1


【ステップ2−9 InitInstance の改造 Part2】

関数 InitInstance の最後の部分に、以下のように一行書き足す。

【変更前】

m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
return TRUE;


【変更後】

m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();
::InitD3D(m_pMainWnd->GetSafeHwnd());
return TRUE;

InitD3D は、先ほどの GameMain.cpp 内にある関数だ。解説は、ここをクリック



【ステップ2−10 ExitInstance ハンドラの作成と改造】
解説
再度 ClassWizard だ。

クラス名に CMission1App を選択する。

メッセージに、ExitInstance を選択する。

「関数の追加」ボタンをクリックしてから、
「コード編集」ボタンをクリック。

そしたら、図11の要領で、一行書き加える
図10 ExitInstance ハンドラの作成


変更前 変更後
図11 ExitInstance の改造点

ReleaseD3D は、先ほどの GameMain.cpp 内にある関数だ。解説は、ここをクリック



【ステップ3】

プロジェクトのビルドと実行を行う。
つまり、VisualC++ にプログラムを生成させ、実行して動作を確認する
のである。

以下の指令に従うべし。

「F・5キーを押す」

すると、下のような画面が表示されたはずだ。



動作確認できたら、Alt-F・4

今度も Mission2 から何も進展してないじゃないかって?

例によって今回はDirect3D の初期化と終了をしているだけで、
Direct3D を使用してはいない。

では引き続き、このアプリケーションの発展として、
Direct3D を使用してみる。


【ステップ4】

【ステップ4−1 OnIdle ハンドラの作成と改造】
解説
またまた ClassWizard だ。

クラス名に CMission1App を選択する。

メッセージに、OnIdle を選択する。

「関数の追加」ボタンをクリックしてから、
「コード編集」ボタンをクリック。

そしたら、図13の要領で、書き加える
図12 OnIdle ハンドラの作成

変更前 変更後
図13 OnIdle の改造点



再度プロジェクトのビルドと実行を行う。
つまり、VisualC++ にプログラムを生成させ、実行して動作を確認する
のである。

F・5キーを押して実行させてみよう。

すると、下のような画面が表示されたはずだ。



今回はこれでおしまい。

戻る