public override void SetFog( FogMode mode, ColorEx color, Real density,
Real start, Real end)
{
RenderState fogType, fogTypeNot;
if ((_deviceManager.ActiveDevice.D3D9DeviceCaps.RasterCaps & RasterCaps.FogTable) != 0)
{
fogType = RenderState.FogTableMode;
fogTypeNot = RenderState.FogVertexMode;
}
else
{
fogType = RenderState.FogVertexMode;
fogTypeNot = RenderState.FogTableMode;
}
if ( mode == FogMode.None )
{
// just disable
SetRenderState( RenderState.FogTableMode, (int)D3D.FogMode.None );
SetRenderState( RenderState.FogEnable, false );
}
else
{
// Allow fog
SetRenderState(RenderState.FogEnable, true);
SetRenderState(fogTypeNot, (int)FogMode.None);
SetRenderState(fogType, (int)D3DHelper.ConvertEnum(mode));
SetRenderState( RenderState.FogColor, D3DHelper.ToColor( color ).ToArgb() );
SetFloatRenderState( RenderState.FogStart, start );
SetFloatRenderState(RenderState.FogEnd, end);
SetFloatRenderState(RenderState.FogDensity, density);
}
}