diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index ac1e7a8a393..1ef7ceccebc 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -3379,17 +3379,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetRenderState(IWineD3DDevice *iface, W case WINED3DRS_FOGSTART : case WINED3DRS_FOGEND : case WINED3DRS_RANGEFOGENABLE : - StateTable[STATE_RENDER(State)].apply(STATE_RENDER(State), This->stateBlock); - break; - case WINED3DRS_FOGCOLOR : - { - float col[4]; - D3DCOLORTOGLFLOAT4(Value, col); - /* Set the default alpha blend color */ - glFogfv(GL_FOG_COLOR, &col[0]); - checkGLcall("glFog GL_FOG_COLOR"); - } + StateTable[STATE_RENDER(State)].apply(STATE_RENDER(State), This->stateBlock); break; case WINED3DRS_FOGDENSITY : diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index 026418c45b0..36c63119c8a 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -792,6 +792,14 @@ static void state_fog(DWORD state, IWineD3DStateBlockImpl *stateblock) { } } +static void state_fogcolor(DWORD state, IWineD3DStateBlockImpl *stateblock) { + float col[4]; + D3DCOLORTOGLFLOAT4(stateblock->renderState[WINED3DRS_FOGCOLOR], col); + /* Set the default alpha blend color */ + glFogfv(GL_FOG_COLOR, &col[0]); + checkGLcall("glFog GL_FOG_COLOR"); +} + const struct StateEntry StateTable[] = { /* State name representative, apply function */ @@ -829,7 +837,7 @@ const struct StateEntry StateTable[] = { /* 31, WINED3DRS_SUBPIXEL */ STATE_RENDER(WINED3DRS_SUBPIXEL), state_unknown }, { /* 32, WINED3DRS_SUBPIXELX */ STATE_RENDER(WINED3DRS_SUBPIXELX), state_unknown }, { /* 33, WINED3DRS_STIPPLEDALPHA */ STATE_RENDER(WINED3DRS_STIPPLEDALPHA), state_unknown }, - { /* 34, WINED3DRS_FOGCOLOR */ STATE_RENDER(WINED3DRS_FOGCOLOR), state_unknown }, + { /* 34, WINED3DRS_FOGCOLOR */ STATE_RENDER(WINED3DRS_FOGCOLOR), state_fogcolor }, { /* 35, WINED3DRS_FOGTABLEMODE */ STATE_RENDER(WINED3DRS_FOGENABLE), state_fog }, { /* 36, WINED3DRS_FOGSTART */ STATE_RENDER(WINED3DRS_FOGENABLE), state_fog }, { /* 37, WINED3DRS_FOGEND */ STATE_RENDER(WINED3DRS_FOGENABLE), state_fog },