臨場感あるモノにするためには、様々な効果付けが必要です。
今回は手軽に実装出来る霧(フォグ)の生成をします。
D3DCAPS9 caps;
ZeroMemory(&caps, sizeof(D3DCAPS9)); //初期化
pDevice->GetDeviceCaps(&caps);
//ピクセルフォグが使えるかどうか確認
if((caps.RasterCaps & D3DPRASTERCAPS_FOGRANGE) == 0)
{
return FALSE;
}
//フォグの設定
FLOAT StartPos = 50; //開始位置
FLOAT EndPos = 100; //終了位置
pDevice->SetRenderState(D3DRS_FOGENABLE, TRUE); //フォグ:ON
pDevice->SetRenderState(D3DRS_FOGCOLOR, D3DCOLOR_ARGB(0xff, 0xff, 0xff, 0xff)); //白色で不透明
pDevice->SetRenderState(D3DRS_FOGVERTEXMODE, D3DFOG_NONE); //頂点モード
pDevice->SetRenderState(D3DRS_FOGTABLEMODE, D3DFOG_LINEAR); //テーブルモード
pDevice->SetRenderState(D3DRS_FOGSTART, *(DWORD*) (&StartPos)); //開始位置
pDevice->SetRenderState(D3DRS_FOGEND, *(DWORD*) (&EndPos)); //終了位置
D3DRS_FOGCOLORで色、透明度を設定しD3DRS_FOGSTART/FOGENDの位置に霧を発生させています。 ゲームらしさを出すためには効果付けは欠かせません。