[PATCH] d3d9: Test the effect of lighting on the result alpha=0A=

Stefan Doesinger stefan at codeweavers.com
Fri Oct 31 22:21:18 CDT 2008


=0A=
---=0A=
 dlls/d3d9/tests/visual.c |   71 =
++++++++++++++++++++++++++++++++++++++++++++++=0A=
 1 files changed, 71 insertions(+), 0 deletions(-)=0A=
=0A=
diff --git a/dlls/d3d9/tests/visual.c b/dlls/d3d9/tests/visual.c=0A=
index a622d56..dd59ef4 100644=0A=
--- a/dlls/d3d9/tests/visual.c=0A=
+++ b/dlls/d3d9/tests/visual.c=0A=
@@ -222,6 +222,8 @@ static void lighting_test(IDirect3DDevice9 *device)=0A=
     DWORD fvf =3D D3DFVF_XYZ | D3DFVF_DIFFUSE;=0A=
     DWORD nfvf =3D D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_NORMAL;=0A=
     DWORD color;=0A=
+    D3DMATERIAL9 material, old_material;=0A=
+    DWORD cop, carg;=0A=
 =0A=
     float mat[16] =3D { 1.0f, 0.0f, 0.0f, 0.0f,=0A=
                       0.0f, 1.0f, 0.0f, 0.0f,=0A=
@@ -337,8 +339,77 @@ static void lighting_test(IDirect3DDevice9 *device)=0A=
     color =3D getPixelColor(device, 480, 120); /* upper left quad - lit =
with normals */=0A=
     ok(color =3D=3D 0x00000000, "Lit quad with normals has color =
%08x\n", color);=0A=
 =0A=
+    hr =3D IDirect3DDevice9_GetMaterial(device, &old_material);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_GetMaterial returned =
%08x\n", hr);=0A=
+    memset(&material, 0, sizeof(material));=0A=
+    material.Diffuse.r =3D 0.0;=0A=
+    material.Diffuse.g =3D 0.0;=0A=
+    material.Diffuse.b =3D 0.0;=0A=
+    material.Diffuse.a =3D 1.0;=0A=
+    material.Ambient.r =3D 0.0;=0A=
+    material.Ambient.g =3D 0.0;=0A=
+    material.Ambient.b =3D 0.0;=0A=
+    material.Ambient.a =3D 0.0;=0A=
+    material.Specular.r =3D 0.0;=0A=
+    material.Specular.g =3D 0.0;=0A=
+    material.Specular.b =3D 0.0;=0A=
+    material.Specular.a =3D 0.0;=0A=
+    material.Emissive.r =3D 0.0;=0A=
+    material.Emissive.g =3D 0.0;=0A=
+    material.Emissive.b =3D 0.0;=0A=
+    material.Emissive.a =3D 0.0;=0A=
+    material.Power =3D 0.0;=0A=
+    IDirect3DDevice9_SetMaterial(device, &material);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetMaterial returned =
%08x\n", hr);=0A=
+=0A=
+    hr =3D IDirect3DDevice9_SetRenderState(device, =
D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_MATERIAL);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetRenderState returned =
%08x\n", hr);=0A=
+    hr =3D IDirect3DDevice9_SetRenderState(device, =
D3DRS_SPECULARMATERIALSOURCE, D3DMCS_MATERIAL);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetRenderState returned =
%08x\n", hr);=0A=
+=0A=
+    hr =3D IDirect3DDevice9_GetTextureStageState(device, 0, =
D3DTSS_COLOROP, &cop);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_GetTextureStageState =
returned %08x\n", hr);=0A=
+    hr =3D IDirect3DDevice9_GetTextureStageState(device, 0, =
D3DTSS_COLORARG1, &carg);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_GetTextureStageState =
returned %08x\n", hr);=0A=
+    hr =3D IDirect3DDevice9_SetTextureStageState(device, 0, =
D3DTSS_COLOROP, D3DTOP_SELECTARG1);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetTextureStageState =
returned %08x\n", hr);=0A=
+    hr =3D IDirect3DDevice9_SetTextureStageState(device, 0, =
D3DTSS_COLORARG1, D3DTA_DIFFUSE | D3DTA_ALPHAREPLICATE);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetTextureStageState =
returned %08x\n", hr);=0A=
+=0A=
+    hr =3D IDirect3DDevice9_BeginScene(device);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_BeginScene returned %08x\n", =
hr);=0A=
+    if(SUCCEEDED(hr)) {=0A=
+        struct vertex lighting_test[] =3D {=0A=
+            {-1.0,   -1.0,   0.1,    0x8000ff00},=0A=
+            { 1.0,   -1.0,   0.1,    0x80000000},=0A=
+            {-1.0,    1.0,   0.1,    0x8000ff00},=0A=
+            { 1.0,    1.0,   0.1,    0x80000000}=0A=
+        };=0A=
+        hr =3D IDirect3DDevice9_SetFVF(device, D3DFVF_XYZ | =
D3DFVF_DIFFUSE);=0A=
+        ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetFVF failed, =
hr=3D%08x\n", hr);=0A=
+        hr =3D IDirect3DDevice9_DrawPrimitiveUP(device, =
D3DPT_TRIANGLESTRIP, 2, lighting_test, sizeof(lighting_test[0]));=0A=
+        ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_DrawPrimitiveUP failed, =
hr=3D%08x\n", hr);=0A=
+=0A=
+        hr =3D IDirect3DDevice9_EndScene(device);=0A=
+        ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_EndScene returned =
%08x\n", hr);=0A=
+    }=0A=
+=0A=
+    IDirect3DDevice9_Present(device, NULL, NULL, NULL, NULL);=0A=
+    color =3D getPixelColor(device, 320, 240);=0A=
+    ok(color =3D=3D 0x00ffffff, "Lit vertex alpha test returned color =
%08x, expected 0x00ffffff\n", color);=0A=
+=0A=
+    hr =3D IDirect3DDevice9_SetTextureStageState(device, 0, =
D3DTSS_COLOROP, cop);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetTextureStageState =
returned %08x\n", hr);=0A=
+    hr =3D IDirect3DDevice9_SetRenderState(device, =
D3DRS_DIFFUSEMATERIALSOURCE, D3DMCS_COLOR1);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetRenderState returned =
%08x\n", hr);=0A=
+    hr =3D IDirect3DDevice9_SetRenderState(device, =
D3DRS_SPECULARMATERIALSOURCE, D3DMCS_COLOR2);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetRenderState returned =
%08x\n", hr);=0A=
     hr =3D IDirect3DDevice9_SetRenderState(device, D3DRS_LIGHTING, =
FALSE);=0A=
     ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetRenderState returned =
%08x\n", hr);=0A=
+    hr =3D IDirect3DDevice9_SetTextureStageState(device, 0, =
D3DTSS_COLORARG1, carg);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetTextureStageState =
returned %08x\n", hr);=0A=
+    hr =3D IDirect3DDevice9_SetMaterial(device, &old_material);=0A=
+    ok(hr =3D=3D D3D_OK, "IDirect3DDevice9_SetMaterial returned =
%08x\n", hr);=0A=
 }=0A=
 =0A=
 static void clear_test(IDirect3DDevice9 *device)=0A=
-- =0A=
1.5.6.4=0A=
=0A=

------=_NextPart_000_0011_01C93C7C.12688220--




More information about the wine-patches mailing list