d3drm: IDirect3DRMMeshBuilder2 Get/SetQuality.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alistair Leslie-Hughes 2022-05-13 12:40:37 +10:00 committed by Alexandre Julliard
parent 3c304287e7
commit b8f67bf78d
3 changed files with 32 additions and 8 deletions

View File

@ -165,6 +165,7 @@ struct d3drm_mesh_builder
DWORD nb_materials;
struct mesh_material *materials;
DWORD *material_indices;
D3DRMRENDERQUALITY quality;
};
struct mesh_group

View File

@ -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);

View File

@ -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);