0からのゲームプログラミング > CCamera クラス

更新日 2004.04.18
CCamera クラス


 ビュー・トランスフォーム射影トランスフォームを簡略化する為のクラス。このクラスは、スケルトンで用意されている。
 


構文

// 初期化をする。
// 第1引数 : ウィンドウハンドル。
// 第2引数 : IDirect3DDevice9 インターフェイスへのポインタ。
// 戻り値  : なし。
void Init(HWND hWnd, LPDIRECT3DDEVICE9 pD3DDevice);


// ビュー・トランスフォーム(右手座標系)
// 第1引数 : カメラ位置(座標), D3DXVECTOR3 構造体へのポインタ。
// 第2引数 : カメラの注視位置(座標), D3DXVECTOR3 構造体へのポインタ。
// 第3引数 : カレント ワールドの上方, D3DXVECTOR3 構造体へのポインタ。省略可。
//            例. 各引数に、&D3DXVECTOR3(0, 0, 0) と指定すると良い。
// 戻り値  : なし。
void View(const D3DXVECTOR3 *pEye, const D3DXVECTOR3 *pAt, const D3DXVECTOR3 *pUp = &D3DXVECTOR3(0, 1, 0));


// 射影・トランスフォーム(右手座標系)
// 第1引数 : 視野角度(単位:度), float型。
// 第2引数 : 前方投影面までの距離。float型。
// 第3引数 : 後方投影面までの距離。float型。
//            前方投影面から後方投影面までが表示される。
// 戻り値  : なし。
void Projection(float fDegree, float fNearView, float fFarView);


// ビューポート変換
// 引数 : D3DVIEWPORT9 インターフェイスへのポインタ
// 戻値 : なし。
void SetViewport(D3DVIEWPORT9 *pViewport);


// ビューポート変換
// 第1引数 : 左上隅を表すピクセルのX座標
// 第2引数 : 左上隅を表すピクセルのY座標
// 第3引数 : 幅
// 第4引数 : 高さ
// 第5引数 : 深度値(Z値)、近い値。デフォルト 0.0f
// 第6引数 : 深度値(Z値)、遠い値。デフォルト 1.0f
// 戻り値  : なし。
void SetViewport(DWORD X, DWORD Y, DWORD Width, DWORD Height, float MinZ = 0.0f, float MaxZ = 1.0f);


 外部で、以下のように宣言されている。
 

HWND			g_hWnd;
LPDIRECT3DDEVICE9	g_pD3DDevice;


使用例

1.CCamera クラスのオブジェクトを宣言する。
※ スケルトンの初期化が先に必要である為、グローバルオブジェクトとしては宣言しないこと。ポインタなら、OK!!

// CCamera クラスのオブジェクトを宣言
CCamera		m_Camera;


2.初期化する。

m_Camera.Init(g_hWnd, g_pD3DDevice);


3.ビュー・トランスフォーム、射影トランスフォームを行う。

// ビュー・トランスフォーム(右手座標系)
// (-200, 400, 400) から (0, 0, 0) を見る。
m_Camera.View(&D3DXVECTOR3(-200, 400, 400), &D3DXVECTOR3(0, 0, 0));

// 射影トランスフォーム(右手座標系)
m_Camera.Projection(45, 10, 10000);


※ 明示的な解放処理は必要なく、デストラクタで自動的に解放される。

【スポンサード リンク】


0からのゲームプログラミング > CCamera クラス