ゲームプログラムのメモ書き

DirectX

エフェクト@ 〜 お手軽フォグ(霧)生成 〜

臨場感あるモノにするためには、様々な効果付けが必要です。
今回は手軽に実装出来る霧(フォグ)の生成をします。

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の位置に霧を発生させています。 ゲームらしさを出すためには効果付けは欠かせません。