Module: wine Branch: master Commit: dd6f5a5437fe502bce8d7a7518f4440dc4d21a24 URL: http://source.winehq.org/git/wine.git/?a=commit;h=dd6f5a5437fe502bce8d7a7518...
Author: Stefan Dösinger stefan@codeweavers.com Date: Sun Dec 10 23:19:57 2006 +0100
wined3d: Move WINED3DRS_ZBIAS to the state table.
---
dlls/wined3d/device.c | 25 +------------------------ dlls/wined3d/state.c | 29 ++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 25 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 0e13085..48e3fc7 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -3390,31 +3390,8 @@ static HRESULT WINAPI IWineD3DDeviceImpl case WINED3DRS_AMBIENTMATERIALSOURCE : case WINED3DRS_EMISSIVEMATERIALSOURCE : case WINED3DRS_LINEPATTERN : - StateTable[STATE_RENDER(State)].apply(STATE_RENDER(State), This->stateBlock); - break; - case WINED3DRS_ZBIAS : /* D3D8 only */ - { - if (Value) { - tmpvalue.d = Value; - TRACE("ZBias value %f\n", tmpvalue.f); - glPolygonOffset(0, -tmpvalue.f); - checkGLcall("glPolygonOffset(0, -Value)"); - glEnable(GL_POLYGON_OFFSET_FILL); - checkGLcall("glEnable(GL_POLYGON_OFFSET_FILL);"); - glEnable(GL_POLYGON_OFFSET_LINE); - checkGLcall("glEnable(GL_POLYGON_OFFSET_LINE);"); - glEnable(GL_POLYGON_OFFSET_POINT); - checkGLcall("glEnable(GL_POLYGON_OFFSET_POINT);"); - } else { - glDisable(GL_POLYGON_OFFSET_FILL); - checkGLcall("glDisable(GL_POLYGON_OFFSET_FILL);"); - glDisable(GL_POLYGON_OFFSET_LINE); - checkGLcall("glDisable(GL_POLYGON_OFFSET_LINE);"); - glDisable(GL_POLYGON_OFFSET_POINT); - checkGLcall("glDisable(GL_POLYGON_OFFSET_POINT);"); - } - } + StateTable[STATE_RENDER(State)].apply(STATE_RENDER(State), This->stateBlock); break;
case WINED3DRS_NORMALIZENORMALS : diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index 155872b..717ec14 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -869,6 +869,33 @@ static void state_linepattern(DWORD stat } }
+static void state_zbias(DWORD state, IWineD3DStateBlockImpl *stateblock) { + union { + DWORD d; + float f; + } tmpvalue; + + if (stateblock->renderState[WINED3DRS_ZBIAS]) { + tmpvalue.d = stateblock->renderState[WINED3DRS_ZBIAS]; + TRACE("ZBias value %f\n", tmpvalue.f); + glPolygonOffset(0, -tmpvalue.f); + checkGLcall("glPolygonOffset(0, -Value)"); + glEnable(GL_POLYGON_OFFSET_FILL); + checkGLcall("glEnable(GL_POLYGON_OFFSET_FILL);"); + glEnable(GL_POLYGON_OFFSET_LINE); + checkGLcall("glEnable(GL_POLYGON_OFFSET_LINE);"); + glEnable(GL_POLYGON_OFFSET_POINT); + checkGLcall("glEnable(GL_POLYGON_OFFSET_POINT);"); + } else { + glDisable(GL_POLYGON_OFFSET_FILL); + checkGLcall("glDisable(GL_POLYGON_OFFSET_FILL);"); + glDisable(GL_POLYGON_OFFSET_LINE); + checkGLcall("glDisable(GL_POLYGON_OFFSET_LINE);"); + glDisable(GL_POLYGON_OFFSET_POINT); + checkGLcall("glDisable(GL_POLYGON_OFFSET_POINT);"); + } +} + const struct StateEntry StateTable[] = { /* State name representative, apply function */ @@ -919,7 +946,7 @@ const struct StateEntry StateTable[] = { /* 44, WINED3DRS_TEXTUREADDRESSU */ 0, /* Handled in ddraw */ state_undefined }, { /* 45, WINED3DRS_TEXTUREADDRESSV */ 0, /* Handled in ddraw */ state_undefined }, { /* 46, WINED3DRS_MIPMAPLODBIAS */ STATE_RENDER(WINED3DRS_MIPMAPLODBIAS), state_unknown }, - { /* 47, WINED3DRS_ZBIAS */ STATE_RENDER(WINED3DRS_ZBIAS), state_unknown }, + { /* 47, WINED3DRS_ZBIAS */ STATE_RENDER(WINED3DRS_ZBIAS), state_zbias }, { /* 48, WINED3DRS_RANGEFOGENABLE */ 0, state_nogl }, { /* 49, WINED3DRS_ANISOTROPY */ STATE_RENDER(WINED3DRS_ANISOTROPY), state_unknown }, { /* 50, WINED3DRS_FLUSHBATCH */ STATE_RENDER(WINED3DRS_FLUSHBATCH), state_unknown },