03.モデルDirect3Dレンダラクラスを作る



モデル描画に関する処理を担うモデルDirect3Dレンダラクラスを、トラックDirect3Dレンダラクラスの派生クラスとして作成します。

プロジェクトを開く

02.で作成したモデルビューワプロジェクトを開きます。

モデルデータ構造の作成

「メニュー/プロジェクト/新しい項目の追加」でファイル名「ModelDataStructure.h」のファイルを作成します。


テンプレート:ヘッダーファイル
ファイル名:ModelDataStructure.h
で追加ボタンを押します。

ModelDataStructure.hの内容を以下のようにします。



ビルドし、エラー、警告がないことを確認します。

モデルDirect3Dレンダラクラスの作成

「メニュー/プロジェクト/クラスの追加」でクラス名「CDirect3DRendererModel」のクラスを作成します。


テンプレート:C++ クラス
で追加ボタンを押します。


クラス名:CDirect3DRendererModel
基本クラス:CDirect3DRendererTrack
で完了ボタンを押します。

ビルドし、エラー、警告がないことを確認します。

メンバ変数、メンバ関数の宣言の追加

Direct3DRendererModel.h のモデルDirect3Dレンダラクラス定義の前に
モデルデータ構造定義ファイルのインクルード
を追加します。
Direct3DRendererModel.h のモデルDirect3Dレンダラクラス定義にメンバ変数、メンバ関数の宣言を追加します。



ビルドし、エラー、警告がないことを確認します。

モデルデータ構築処理の追加

Direct3DRendererModel.cpp のモデルDirect3Dレンダラクラスのコンストラクタにモデルデータ構築処理を追加します。



ビルドし、エラー、警告がないことを確認します。

RenderScene関数のオーバーライド

モデルDirect3Dレンダラクラスにモデル描画を考慮した描画処理 RenderScene関数 をオーバーライドします。

Direct3DRendererModel.cpp の末尾にRenderScene関数の定義を追加します。



Direct3DRendererBase.h のベースDirect3Dレンダラクラスのメンバ関数
RenderScene
をprotected関数、さらにvirtual関数とします。



ビルドし、エラー、警告がないことを確認します。

Direct3Dリソースの構築関数、破棄関数のオーバーライド

モデルDirect3Dレンダラクラスにモデル描画処理を考慮したDirect3Dリソース構築処理RestoreDirect3DResource関数、Direct3Dリソース破棄処理DestroyDirect3DResource関数 をオーバーライドします。

Direct3DRendererModel.cpp の末尾にRestoreDirect3DResource関数、DestroyDirect3DResource関数の定義を追加します。



Direct3DRendererBase.h のベースDirect3Dレンダラクラスのメンバ関数
RestoreDirect3DResource
DestroyDirect3DResource
をprotected関数、さらにvirtual関数とします。



ビルドし、エラー、警告がないことを確認します。

レンダラオブジェクトのクラスの変更

ModelViewer.cpp の
#include "Direct3DRendererTrack.h"

#include "Direct3DRendererModel.h"
に、
CDirect3DRendererTrack d3drenderer;

CDirect3DRendererModel d3drenderer;
に変更します。



ビルドし、エラー、警告がないことを確認します。

実行

実行し、04.で作成したモデルビューワプログラムと同じ結果になることを確認します。

実行結果

ダウンロード

実行形式ファイルダウンロード (ModelViewerDirect3DWinAPI2008_03_exe.lzh)

ソースファイルダウンロード (ModelViewerDirect3DWinAPI2008_03_src.lzh)