【概要】
3Dレンダリングを可能にする描画環境
| 重要度 | メソッド名・解説 | アクセス |
|---|---|---|
| ◎ | CD3DEnv コンストラクタ | public |
| ◎ | ~CD3DEnv デストラクタ | public |
| ◎ | virtual HRESULT InitD3D(HWND hWnd) Direct3D9を初期化し、この描画環境を描画可能な状態にする。 | public |
| ◎ | void ReloadGraphics() モデル・テクスチャなどのデータを、グラフィックデバイスへ転送する。既に転送されているデータも全て転送しなおす。 | public |
| ◎ | void LoadGraphics() モデル・テクスチャなどのデータを、グラフィックデバイスへ転送する。既に転送されているデータは再転送されない。 | public |
| ◎ | virtual void UpdateScene(AnimationCallback animCB, RenderSceneCallback renderCB) アニメーションを行った後シーンのレンダリングを行う。 アニメーションの為にanimCB を呼び出し、レンダリングの為に renderCB を呼び出す。 | public |
| ○ | virtual void RenderSceneWithVP(RECT* rcWindow, RenderSceneCallback renderCB) ビューポートを設定し、画面の一部をレンダリングする。 ビューポートを設定した後、レンダリングの為に renderCB を呼び出す。 | public |
| △ | virtual void UpdateScene(AnimationCallback2 animCB, RenderSceneCallback2 renderCB, PVOID lpUser) アニメーションを行った後シーンのレンダリングを行う。 アニメーションの為にanimCB を呼び出し、レンダリングの為に renderCB を呼び出す。 呼び出し時、lpUserの値がコールバックに渡される。 | public |
| △ | virtual void RenderSceneWithVP(RECT* rcWindow, RenderSceneCallback2 renderCB, PVOID lpUser, BOOL bClear=TRUE) ビューポートを設定し、画面の一部をレンダリングする。 ビューポートを設定した後、レンダリングの為に renderCB を呼び出す。 呼び出し時、lpUserの値がコールバックに渡される。 | public |
| △ | virtual void RenderSceneIntoSurface(LPDIRECT3DSURFACE9 pSurface, D3DCOLOR bgcolor, RenderSceneCallback2 renderCB, PVOID lpUser); 指定されたサーフェイスに、シーンをレンダリングする。 レンダリングの為に renderCB を呼び出す。呼び出し時、lpUserの値がコールバックに渡される。 | public |
| ○ | void SetBackgroundColor(D3DCOLOR c) シーンをレンダリングする時画面をクリアするカラーを設定する。 | public |
| ○ | HRESULT ToggleFullscreen() ウィンドウモード<-->フルスクリーンモード相互の切り替えを行う。 | public |
| ○ | BOOL IsWindowed() 描画環境がウィンドウモードであればtrue を返す | public |
| ○ | HRESULT GetD3DDevice(LPDIRECT3DDEVICE9 *pDevice) リファレンスカウントをインクリメントして、現在使用中の Direct3DDevice9 を返す。 | public |
| ○ | void AddGraphicsObject(CGraphicsObject *pObj) 指定されたCGraphicsObject をシステムの管理下に置く。 | public |
| ○ | void RemoveGraphicsObject(CGraphicsObject *pObj) 指定されたCGraphicsObject をシステムの管理下から除く。 | public |
| △ | virtual void InitFail(HWND hWnd, LPCTSTR szError,...); 初期化エラー処理。 デフォルトではダイアログウィンドウでエラーが通知されるが、オーバーライド可能 | public |
| △ | D3DXMATRIX *GetSystemView() システムが描画に使用するビュー行列を返す | public |
| △ | D3DXMATRIX *GetSystemProjection() システムが描画に使用するプロジェクション行列を返す | public |
| △ | D3DXVECTOR3 *GetSystemLightDirection() システムが描画に使用する有向光源の方向を返す システムは有向光源を一つだけ使用する。 | public |
| △ | D3DCAPS9 *GetCurrentDeviceCaps() システムが使用中の Direct3DDevice9 の能力を示すデータを返す。 | public |
| △ | D3DPRESENT_PARAMETERS *GetD3DPresentParameters() システムの Direct3DDevice9 に対する設定を返す。 | public |
| △ | BOOL IsDepthBufferActive() Z-BUFFER を使用可能であれば、true を返す。 | public |
| △ | virtual DWORD SelectMode(D3DModeInfo *modes, DWORD numModes) 描画環境初期化時にグラフィックモードを選択する。初期化時にグラフィックモードを指定したい場合は、この関数をオーバーロードする。 | protected |
| ○ | BOOL GetDI8KeyState(int key) key で指定されたキーの状態を調べる | public |
| ○ | virtual void SetJoyButtonToKeyMap(int bno, BYTE key)() ジョイスティックボタンのキーコード(DIK_*)への変換を設定する。 | public |
| △ | virtual HRESULT InitDI(HWND hWnd) DirectInput を初期化する。このメソッドを何もせず、S_OK を返すメソッドにオーバーロードする事で、DirectInput を使用しない設定にする事ができる。 | protected |
| △ | virtual void DoIO() DirectInput を用いてデバイスから入力を行う。入力処理を変えたい場合は、このメソッドをオーバーロード可能。 | protected |
| △ | virtual void ReleaseDI(HWND hWnd) DirectInput を終了する。入力デバイスを変更した場合など、必要があればオーバーロードする。 | protected |
| △ | D3DLIGHT9 *GetSystemLight() システムが使用するライトを返す。変更する場合、有向光源を使用する事。 | public |
| △ | void SetAmbientColor(D3DCOLOR c) システムが使用アンビエント光源を設定する。 | public |
| △ | D3DCOLOR GetAmbientColor() システムが使用アンビエント光源を取得する。 | public |
| △ | DWORD GetBackBufferWidth() バックバッファの幅をピクセル単位で返す。 | public |
| △ | DWORD GetBackBufferHeight() バックバッファの高さをピクセル単位で返す。 | public |
| △ | HRESULT CheckDeviceFormat(DWORD usage, D3DRESOURCETYPE rtype, D3DFORMAT format) 現在使用中のデバイスに対して、利用可能なテクスチャフォーマットなどを確認する。 | public |
| △ | void RenderTriangle3D(D3DXVECTOR3 *p,D3DCOLOR c, D3DXMATRIX *pMat=NULL) 座標と頂点色を指定して三次元空間内に三角形を描画する。 | public |
| △ | void RenderQuadrilateral3D(D3DXVECTOR3 *p,D3DCOLOR c, D3DXMATRIX *pMat=NULL) 座標と頂点色を指定して三次元空間内に四角形を描画する。 | public |
| △ | void RenderLine3D(D3DXVECTOR3 *p, D3DCOLOR c, D3DXMATRIX *pMat = NULL) 座標と頂点色を指定して三次元空間内に直線を描画する。 | public |
| △ | void TextureDBRegisterNewKey(LPSTR key,CTextureNode **pRet) ファイル名を指定して共有テクスチャを登録する。 | public |
| ○ | CShaderContainer *GetShaderContainer(GUID guid) guid で管理されたCShaderContainerオブジェクトを取得する。 | public |
| △ | BOOL ConfirmDevice(D3DCAPS9 *pCaps,DWORD dwBehavior,D3DFORMAT fmt); デバイスの性能をテストするメソッド。 | public |
| △ | FLOAT GetElapsedTime() 経過時間タイマの現在地を取得する。タイマー値は、UpdateScene のコールバックに与えられる値と同じだが、
このメソッドを呼び出しても、タイマはリセットされない為、処理の軽減などに使用可能である。 | public |
| △ | FLOAT ResetTimer() 経過時間タイマの値を0にリセットする。 | public |
※重要度の意味:
| 引数: | rcWindow:ビューポートを指定する矩形を指定する。 |
| renderCB:描画の為のコールバックを指定する。 | |
| bClear:True…レンダリングに際し画面をクリアする,/False…画面をクリアしない。 |
| 引数: | rcWindow:ビューポートを指定する矩形を指定する。 |
| renderCB:描画の為のコールバックを指定する。 | |
| lpUser:描画の為のコールバックに与える引数を指定する。 | |
| bClear:画面およびZ-Buffer をクリアしてから描画するときは、TRUE。 |
| 引数: | pSurface:レンダリングターゲットとなるサーフェス。 |
| bgcolor:画面クリアに使用する色を指定する。 | |
| renderCB:描画の為のコールバックを指定する。 | |
| lpUser:描画の為のコールバックに与える引数を指定する。 |
//【使用例】
LPDIRECT3DDEVICE9 pDevice;
if (SUCCEEDED(lpd3denv->GetD3DDevice(&pDevice))){
// :
// :
// Do some rendering.
// :
// :
pDevice->Release();
}
//【オーバーロードにより、1024×768のモードに設定する例】
DWORD MyCD3DEnv::SelectMode(D3DModeInfo *modes, DWORD numModes)
{
DWORD dwCurrent = 0;
// 解像度 1024x768 のモードを初期値とする。
//(ピクセルフォーマットが16ビットのモードを優先する)
for(DWORD m=0L; m<numModes; m++ ){
if( modes[m].Width==1024 && modes[m].Height==768 )
{
dwCurrent = m;
if( modes[m].Format == D3DFMT_R5G6B5 ||
modes[m].Format == D3DFMT_X1R5G5B5 ||
modes[m].Format == D3DFMT_A1R5G5B5 )
{
break;
}
}
}
return dwCurrent;
}
//【DirectInputを使用しない例】
class MyCD3DEnv : public CD3DEnv
{
public:
virtual HRESULT InitDI(HWND hWnd){ return S_OK; }
};
| 引数: | usage: | 要求する使用方法をD3DUSAGE および D3DUSAGE_QUERY 定数の任意の組み合わせで指定する。 |
| rtype: | リソース タイプを、D3DRESOURCETYPE のメンバで指定する。 例えばテクスチャであれば、D3DRTYPE_TEXTURE を指定する。 | |
| format: | 使用しようとするサーフェイスのフォーマットD3DFORMAT のメンバで指定する。 テクスチャであればテクスチャフォーマット。 |
| 引数: | p: | 3つの頂点の座標を時計回りで指定する。 |
| c: | 頂点カラーをD3DCOLOR 型で指定する。 | |
| pMat: | 描画に使用するワールド行列を指定する。(省略可) |
| 引数: | p: | 4つの頂点の座標を時計回りで指定する。 |
| c: | 頂点カラーをD3DCOLOR 型で指定する。 | |
| pMat: | 描画に使用するワールド行列を指定する。(省略可) |
| 引数: | p: | 2つの頂点の座標を指定する。 |
| c: | 頂点カラーをD3DCOLOR 型で指定する。 | |
| pMat: | 描画に使用するワールド行列を指定する。(省略可) |
| 引数: | key: | テクスチャを特定するキーワード(現在の実装ではファイル名)。 |
| pRet: | 共有テクスチャクラスのインスタンスを受け取る為のポインタ。 |
| 引数: | pCaps: | D3DCAPS9 型のポインタ。デバイスの性能を受け取る。 |
| dwBehavior: | デバイスの動作モードを受け取る。 | |
| fmt: | バックバッファのピクセルフォーマットを受け取る。 |
BOOL CD3DEnv::ConfirmDevice(D3DCAPS9 *pCaps,DWORD dwBehavior,D3DFORMAT fmt){ if( (dwBehavior & D3DCREATE_HARDWARE_VERTEXPROCESSING ) || (dwBehavior & D3DCREATE_MIXED_VERTEXPROCESSING ) ) { if( pCaps->VertexShaderVersion < D3DVS_VERSION(1,1) ) return E_FAIL; } if( pCaps->PixelShaderVersion < D3DPS_VERSION(1,1) ) return E_FAIL; return S_OK; }