Module: wine Branch: master Commit: de96320421d82c4728a898456fbcbc7546e00007 URL: http://source.winehq.org/git/wine.git/?a=commit;h=de96320421d82c4728a898456f...
Author: Stefan Dösinger stefan@codeweavers.com Date: Tue Dec 5 23:45:35 2006 +0100
wined3d: Move WINED3DRS_FILLMODE to the state table.
---
dlls/wined3d/device.c | 9 +-------- dlls/wined3d/state.c | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 9 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 939dfbe..077ac42 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -3437,14 +3437,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl
switch (State) { case WINED3DRS_FILLMODE : - switch ((WINED3DFILLMODE) Value) { - case WINED3DFILL_POINT : glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); break; - case WINED3DFILL_WIREFRAME : glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); break; - case WINED3DFILL_SOLID : glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); break; - default: - FIXME("Unrecognized WINED3DRS_FILLMODE value %d\n", Value); - } - checkGLcall("glPolygonMode (fillmode)"); + StateTable[STATE_RENDER(WINED3DRS_FILLMODE)].apply(STATE_RENDER(WINED3DRS_FILLMODE), This->stateBlock); break;
case WINED3DRS_LIGHTING : diff --git a/dlls/wined3d/state.c b/dlls/wined3d/state.c index b674b08..32b8032 100644 --- a/dlls/wined3d/state.c +++ b/dlls/wined3d/state.c @@ -58,6 +58,27 @@ static void state_undefined(DWORD state, WARN("undefined state %d\n", state); }
+static void state_fillmode(DWORD state, IWineD3DStateBlockImpl *stateblock) { + D3DFILLMODE Value = stateblock->renderState[WINED3DRS_FILLMODE]; + + switch(Value) { + case D3DFILL_POINT: + glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); + checkGLcall("glPolygonMode(GL_FRONT_AND_BACK, GL_POINT)"); + break; + case D3DFILL_WIREFRAME: + glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); + checkGLcall("glPolygonMode(GL_FRONT_AND_BACK, GL_LINE)"); + break; + case D3DFILL_SOLID: + glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); + checkGLcall("glPolygonMode(GL_FRONT_AND_BACK, GL_FILL)"); + break; + default: + FIXME("Unrecognized WINED3DRS_FILLMODE value %d\n", Value); + } +} + const struct StateEntry StateTable[] = { /* State name representative, apply function */ @@ -69,7 +90,7 @@ const struct StateEntry StateTable[] = { /* 5, WINED3DRS_WRAPU */ STATE_RENDER(WINED3DRS_WRAPU), state_unknown }, { /* 6, WINED3DRS_WRAPV */ STATE_RENDER(WINED3DRS_WRAPV), state_unknown }, { /* 7, WINED3DRS_ZENABLE */ STATE_RENDER(WINED3DRS_ZENABLE), state_unknown }, - { /* 8, WINED3DRS_FILLMODE */ STATE_RENDER(WINED3DRS_FILLMODE), state_unknown }, + { /* 8, WINED3DRS_FILLMODE */ STATE_RENDER(WINED3DRS_FILLMODE), state_fillmode }, { /* 9, WINED3DRS_SHADEMODE */ STATE_RENDER(WINED3DRS_SHADEMODE), state_unknown }, { /* 10, WINED3DRS_LINEPATTERN */ STATE_RENDER(WINED3DRS_LINEPATTERN), state_unknown }, { /* 11, WINED3DRS_MONOENABLE */ STATE_RENDER(WINED3DRS_MONOENABLE), state_unknown },