fog.cpp

来自「自己做的一个3D场景」· C++ 代码 · 共 44 行

CPP
44
字号
//-----------------------------------------------------------------------------
// Name: SetFog()
// Desc: 设置雾化效果
//-----------------------------------------------------------------------------
VOID SetFog()
{
	g_pd3dDevice->SetRenderState( D3DRS_FOGENABLE,   TRUE );
	g_pd3dDevice->SetRenderState( D3DRS_FOGCOLOR   , 0x00ffffFF);

	D3DCAPS9 stCaps;
	g_pd3dDevice->GetDeviceCaps (&stCaps);
	if (stCaps.RasterCaps&D3DPRASTERCAPS_FOGRANGE)
		g_pd3dDevice->SetRenderState(D3DRS_RANGEFOGENABLE, TRUE);

	float fTime=timeGetTime()/1000.0f;
	fTime=fTime/10;
	int FogKey=((int)fTime)%3;

	float start=50;
	float end=500;
	float density=.001f;

	switch(FogKey)
	{
		case 0:
			g_pd3dDevice->SetRenderState( D3DRS_FOGSTART   ,  *(DWORD*)&start);
			g_pd3dDevice->SetRenderState( D3DRS_FOGEND   ,  *(DWORD*)&end);
			g_pd3dDevice->SetRenderState( D3DRS_FOGTABLEMODE ,  D3DFOG_LINEAR);
			strcpy(g_PrintText,"linear fog");
			break;
		case 1:
			g_pd3dDevice->SetRenderState( D3DRS_FOGDENSITY , *(DWORD*)&density);
			g_pd3dDevice->SetRenderState( D3DRS_FOGTABLEMODE ,  D3DFOG_EXP);
			strcpy(g_PrintText,"exp fog");
			break;
		case 2:
			g_pd3dDevice->SetRenderState( D3DRS_FOGDENSITY , *(DWORD*)&density);
			g_pd3dDevice->SetRenderState( D3DRS_FOGTABLEMODE ,  D3DFOG_EXP2);
			strcpy(g_PrintText,"exp2 fog");
			break;
	}
	
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?