Alistair Leslie-Hughes : d3drm: IDirect3DRMMeshBuilder2 Get/SetQuality.

Alexandre Julliard julliard at winehq.org
Thu May 19 16:15:12 CDT 2022


Module: wine
Branch: master
Commit: b8f67bf78d3f8ab091aebae9ddc0e9354144b26a
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b8f67bf78d3f8ab091aebae9ddc0e9354144b26a

Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date:   Fri May 13 12:40:37 2022 +1000

d3drm: IDirect3DRMMeshBuilder2 Get/SetQuality.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/d3drm/d3drm_private.h |  1 +
 dlls/d3drm/meshbuilder.c   | 26 ++++++++++++++++++--------
 dlls/d3drm/tests/d3drm.c   | 13 +++++++++++++
 3 files changed, 32 insertions(+), 8 deletions(-)

diff --git a/dlls/d3drm/d3drm_private.h b/dlls/d3drm/d3drm_private.h
index b5d60e518f8..4aea42ce0a3 100644
--- a/dlls/d3drm/d3drm_private.h
+++ b/dlls/d3drm/d3drm_private.h
@@ -165,6 +165,7 @@ struct d3drm_mesh_builder
     DWORD nb_materials;
     struct mesh_material *materials;
     DWORD *material_indices;
+    D3DRMRENDERQUALITY quality;
 };
 
 struct mesh_group
diff --git a/dlls/d3drm/meshbuilder.c b/dlls/d3drm/meshbuilder.c
index 4a08b32d72d..1f783baf1fe 100644
--- a/dlls/d3drm/meshbuilder.c
+++ b/dlls/d3drm/meshbuilder.c
@@ -670,9 +670,10 @@ static HRESULT WINAPI d3drm_mesh_builder2_SetTextureTopology(IDirect3DRMMeshBuil
 static HRESULT WINAPI d3drm_mesh_builder2_SetQuality(IDirect3DRMMeshBuilder2 *iface,
         D3DRMRENDERQUALITY quality)
 {
-    FIXME("iface %p, quality %#lx stub!\n", iface, quality);
+    struct d3drm_mesh_builder *mesh_builder = impl_from_IDirect3DRMMeshBuilder2(iface);
+    TRACE("iface %p, quality %#lx\n", iface, quality);
 
-    return E_NOTIMPL;
+    return IDirect3DRMMeshBuilder3_SetQuality(&mesh_builder->IDirect3DRMMeshBuilder3_iface, quality);
 }
 
 static HRESULT WINAPI d3drm_mesh_builder2_SetPerspective(IDirect3DRMMeshBuilder2 *iface, BOOL enable)
@@ -815,9 +816,11 @@ static HRESULT WINAPI d3drm_mesh_builder2_CreateFace(IDirect3DRMMeshBuilder2 *if
 
 static D3DRMRENDERQUALITY WINAPI d3drm_mesh_builder2_GetQuality(IDirect3DRMMeshBuilder2 *iface)
 {
-    FIXME("iface %p stub!\n", iface);
+    struct d3drm_mesh_builder *mesh_builder = impl_from_IDirect3DRMMeshBuilder2(iface);
 
-    return 0;
+    TRACE("iface %p\n", iface);
+
+    return mesh_builder->quality;
 }
 
 static BOOL WINAPI d3drm_mesh_builder2_GetPerspective(IDirect3DRMMeshBuilder2 *iface)
@@ -1754,9 +1757,13 @@ static HRESULT WINAPI d3drm_mesh_builder3_SetTextureTopology(IDirect3DRMMeshBuil
 static HRESULT WINAPI d3drm_mesh_builder3_SetQuality(IDirect3DRMMeshBuilder3 *iface,
         D3DRMRENDERQUALITY quality)
 {
-    FIXME("iface %p, quality %#lx stub!\n", iface, quality);
+    struct d3drm_mesh_builder *mesh_builder = impl_from_IDirect3DRMMeshBuilder3(iface);
 
-    return E_NOTIMPL;
+    TRACE("iface %p, quality %#lx\n", iface, quality);
+
+    mesh_builder->quality = quality;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI d3drm_mesh_builder3_SetPerspective(IDirect3DRMMeshBuilder3 *iface,
@@ -1904,9 +1911,11 @@ static HRESULT WINAPI d3drm_mesh_builder3_CreateFace(IDirect3DRMMeshBuilder3 *if
 
 static D3DRMRENDERQUALITY WINAPI d3drm_mesh_builder3_GetQuality(IDirect3DRMMeshBuilder3 *iface)
 {
-    FIXME("iface %p stub!\n", iface);
+    struct d3drm_mesh_builder *mesh_builder = impl_from_IDirect3DRMMeshBuilder3(iface);
 
-    return 0;
+    TRACE("iface %p\n", iface);
+
+    return mesh_builder->quality;
 }
 
 static BOOL WINAPI d3drm_mesh_builder3_GetPerspective(IDirect3DRMMeshBuilder3 *iface)
@@ -2345,6 +2354,7 @@ HRESULT d3drm_mesh_builder_create(struct d3drm_mesh_builder **mesh_builder, IDir
     object->IDirect3DRMMeshBuilder3_iface.lpVtbl = &d3drm_mesh_builder3_vtbl;
     object->ref = 1;
     object->d3drm = d3drm;
+    object->quality = D3DRMRENDER_GOURAUD;
     IDirect3DRM_AddRef(object->d3drm);
 
     d3drm_object_init(&object->obj, classname);
diff --git a/dlls/d3drm/tests/d3drm.c b/dlls/d3drm/tests/d3drm.c
index 7b591958373..209ff7ec311 100644
--- a/dlls/d3drm/tests/d3drm.c
+++ b/dlls/d3drm/tests/d3drm.c
@@ -863,6 +863,7 @@ static void test_Face(void)
     D3DCOLOR color;
     DWORD count;
     int icount;
+    D3DRMRENDERQUALITY quality;
 
     hr = Direct3DRMCreate(&d3drm);
     ok(hr == D3DRM_OK, "Cannot get IDirect3DRM interface, hr %#lx\n", hr);
@@ -934,6 +935,18 @@ static void test_Face(void)
     icount = IDirect3DRMFace_GetVertexCount(face1);
     ok(!icount, "wrong VertexCount: %i\n", icount);
 
+    quality = IDirect3DRMMeshBuilder3_GetQuality(MeshBuilder2);
+    ok(quality == D3DRMRENDER_GOURAUD, "Unexpected %lx.\n", quality);
+
+    hr = IDirect3DRMMeshBuilder3_SetQuality(MeshBuilder2, D3DRMRENDER_PHONG);
+    ok(hr == S_OK, "got %lx.\n", hr);
+
+    quality = IDirect3DRMMeshBuilder3_GetQuality(MeshBuilder2);
+    ok(quality == D3DRMRENDER_PHONG, "got %lx.\n", quality);
+
+    hr = IDirect3DRMMeshBuilder3_SetQuality(MeshBuilder2, D3DRMRENDER_GOURAUD);
+    ok(hr == S_OK, "got %lx.\n", hr);
+
     IDirect3DRMFace_Release(face1);
     IDirect3DRMMeshBuilder2_Release(MeshBuilder2);
 




More information about the wine-cvs mailing list