01.ベースDirect3Dレンダラクラスを作る



Direct3Dの初期化処理と終了処理を行い、Direct3Dを用いた描画処理の骨格を担う、ベースDirect3Dレンダラクラスを作成します。

プロジェクトの作成

「メニュー/新規作成/プロジェクト」を選択します。


プロジェクトの種類:Win32
テンプレート:Win32 プロジェクト
プロジェクト名:ModelViewer
場所:適当なフォルダを指定
ソリューションのディレクトリの作成:チェックしない
でOKボタンを押します。


次へボタンを押します。


アプリケーションの種類:Windows アプリケーション
空のプロジェクト:チェックしない
で完了ボタンを押します。

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

ベースDirect3Dレンダラクラスの作成

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


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


クラス名:CDirect3DRendererBase
で完了ボタンを押します。

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

assertヘッダーファイルのインクルード

stdafx.h の末尾に、 assert.h のインクルードを追加します。



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

Direct3Dのヘッダーファイルのインクルード

Direct3DRendererBase.h に以下のDirect3Dのヘッダーファイルのインクルードを追加します。
#include <d3dx9.h>


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

Direct3Dのlibファイルをプロジェクトに追加

Direct3DRendererBase.cpp に以下のDirect3Dのlibファイルをプロジェクトに追加する記述を追加します。
#pragma comment( lib, "d3d9.lib" )
#ifdef _DEBUG
#pragma comment( lib, "d3dx9d.lib" )
#else
#pragma comment( lib, "d3dx9.lib" )
#endif



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

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

Direct3DRendererBase.h のベースDirect3Dレンダラクラス定義にメンバ変数、メンバ関数の宣言を追加します。



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

メンバ変数の初期化

Direct3DRendererBase.cpp のベースDirect3Dレンダラクラスのコンストラクタにメンバ変数の初期化を追加します。



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

Direct3D初期化処理

Direct3DRendererBase.cpp の末尾にDirect3D初期化処理の定義を追加します。



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

Direct3D終了処理

Direct3DRendererBase.cpp の末尾にDirect3D終了処理の定義を追加します。



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

ビューポート設定処理

Direct3DRendererBase.cpp の末尾にビューポート設定処理の定義を追加します。



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

視野角錐台設定処理

Direct3DRendererBase.cpp の末尾に視野角錐台設定処理の定義を追加します。



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

視点座標変換処理

Direct3DRendererBase.cpp の末尾に視点座標変換処理の定義を追加します。



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

サイズ変更処理

Direct3DRendererBase.cpp の末尾にサイズ変更処理の定義を追加します。



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

描画処理

Direct3DRendererBase.cpp の末尾に描画処理の定義を追加します。



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

レンダラオブジェクトの宣言

ModelViewer.cpp に、
#include "Direct3DRendererBase.h"
および
CDirect3DRendererBase d3drenderer;
を追加します。



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

ウィンドウスタイルの変更

Direct3Dが他のウィンドウに描画するのを防ぐために、ModelViewer.cpp の InitInstance関数内のCreateWindows関数呼び出しのウィンドウスタイルパラメータに、WS_CLIPSIBLINGS と WS_CLIPCHILDREN を追加します。



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

WM_PAINTメッセージ処理の変更

ModelViewer.cpp の WndProc関数の、WM_PAINTメッセージ処理の、BeginPaintとEndPaintの間に描画処理の呼び出しを追加します。



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

WM_DESTROYメッセージ処理の変更

ModelViewer.cpp の WndProc関数の、WM_DESTROYメッセージ処理に、Direct3D終了処理の呼び出しを追加します。



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

WM_ERASEBKGNDメッセージ処理の追加

画面の描画はDirect3Dがすべてを行うので、既定の画面背景消去処理を無効にします。
ModelViewer.cpp の WndProc関数に、WM_DESTROYメッセージ処理を追加します。
処理は、return 1; とします。



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

WM_SIZEメッセージ処理の追加

ModelViewer.cpp の WndProc関数に、WM_SIZEメッセージ処理を追加します。
サイズ変更処理の呼び出しを追加します。



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

実行

実行結果

ダウンロード

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

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