[WINED3D] Resend, Bugfix: Correct initial render states

Ivan Gyurdiev ivg231 at gmail.com
Thu Jul 20 22:05:22 CDT 2006


The initial render states do not match native.

ALPHAREF is 0xff should be 0
AMBIENTMATERIALSOURCE is D3DMCS_COLOR2, should be D3DMCS_MATERIAL
POINTSIZE_MIN is 0.0f, should be 1.0f
POINTSCALE_A is TRUE, should be 1.0f
POINTSCALE_B is TRUE, should be 0.0f
POINTSCALE_C is TRUE, should be 0.0f

DEBUGMONITORTOKEN is D3DDMT_DISABLE, should be 0xbaadcafe
(It may be interesting to recheck that on a "debug build")

Uncovered by stateblock test patch.

-------------- next part --------------
---

 dlls/wined3d/stateblock.c |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

5f786500550ad682207fe4f17f2179c30cad8c70
diff --git a/dlls/wined3d/stateblock.c b/dlls/wined3d/stateblock.c
index d23d782..e3d0e7c 100644
--- a/dlls/wined3d/stateblock.c
+++ b/dlls/wined3d/stateblock.c
@@ -708,7 +708,7 @@ static HRESULT  WINAPI IWineD3DStateBloc
     IWineD3DDevice_SetRenderState(device, WINED3DRS_CULLMODE,         D3DCULL_CCW);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_ZFUNC,            D3DCMP_LESSEQUAL);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_ALPHAFUNC,        D3DCMP_ALWAYS);
-    IWineD3DDevice_SetRenderState(device, WINED3DRS_ALPHAREF,         0xff); /*??*/
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_ALPHAREF,         0);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_DITHERENABLE,     FALSE);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_ALPHABLENDENABLE, FALSE);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_FOGENABLE,        FALSE);
@@ -758,26 +758,29 @@ static HRESULT  WINAPI IWineD3DStateBloc
     IWineD3DDevice_SetRenderState(device, WINED3DRS_NORMALIZENORMALS,         FALSE);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_DIFFUSEMATERIALSOURCE,    D3DMCS_COLOR1);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_SPECULARMATERIALSOURCE,   D3DMCS_COLOR2);
-    IWineD3DDevice_SetRenderState(device, WINED3DRS_AMBIENTMATERIALSOURCE,    D3DMCS_COLOR2);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_AMBIENTMATERIALSOURCE,    D3DMCS_MATERIAL);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_EMISSIVEMATERIALSOURCE,   D3DMCS_MATERIAL);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_VERTEXBLEND,              D3DVBF_DISABLE);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_CLIPPLANEENABLE,          0);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_SOFTWAREVERTEXPROCESSING, FALSE);
     tmpfloat.f = 1.0f;
     IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSIZE,                tmpfloat.d);
-    tmpfloat.f = 0.0f;
+    tmpfloat.f = 1.0f;
     IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSIZE_MIN,            tmpfloat.d);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSPRITEENABLE,        FALSE);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSCALEENABLE,         FALSE);
-    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSCALE_A,             TRUE);
-    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSCALE_B,             TRUE);
-    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSCALE_C,             TRUE);
+    tmpfloat.f = 1.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSCALE_A,             tmpfloat.d);
+    tmpfloat.f = 0.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSCALE_B,             tmpfloat.d);
+    tmpfloat.f = 0.0f;
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSCALE_C,             tmpfloat.d);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_MULTISAMPLEANTIALIAS,     TRUE);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_MULTISAMPLEMASK,          0xFFFFFFFF);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_PATCHEDGESTYLE,           D3DPATCHEDGE_DISCRETE);
     tmpfloat.f = 1.0f;
     IWineD3DDevice_SetRenderState(device, WINED3DRS_PATCHSEGMENTS,            tmpfloat.d);
-    IWineD3DDevice_SetRenderState(device, WINED3DRS_DEBUGMONITORTOKEN,        D3DDMT_DISABLE);
+    IWineD3DDevice_SetRenderState(device, WINED3DRS_DEBUGMONITORTOKEN,        0xbaadcafe);
     tmpfloat.f = 64.0f;
     IWineD3DDevice_SetRenderState(device, WINED3DRS_POINTSIZE_MAX,            tmpfloat.d);
     IWineD3DDevice_SetRenderState(device, WINED3DRS_INDEXEDVERTEXBLENDENABLE, FALSE);
-- 
1.3.3



More information about the wine-patches mailing list