[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