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)