From 5a979deeb338b0bf250aae51cfb308f0c242c1a0 Mon Sep 17 00:00:00 2001 From: Christian Costa Date: Mon, 21 May 2012 09:42:57 +0200 Subject: [PATCH] d3drm: Implement IDirect3DRMMesh_GetGroupCount. --- dlls/d3drm/meshbuilder.c | 4 ++-- dlls/d3drm/tests/d3drm.c | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/dlls/d3drm/meshbuilder.c b/dlls/d3drm/meshbuilder.c index bbe927d3c82..4333516aae3 100644 --- a/dlls/d3drm/meshbuilder.c +++ b/dlls/d3drm/meshbuilder.c @@ -2508,9 +2508,9 @@ static DWORD WINAPI IDirect3DRMMeshImpl_GetGroupCount(IDirect3DRMMesh* iface) { IDirect3DRMMeshImpl *This = impl_from_IDirect3DRMMesh(iface); - FIXME("(%p)->(): stub\n", This); + TRACE("(%p)->()\n", This); - return 0; + return This->nb_groups; } static HRESULT WINAPI IDirect3DRMMeshImpl_GetGroup(IDirect3DRMMesh* iface, diff --git a/dlls/d3drm/tests/d3drm.c b/dlls/d3drm/tests/d3drm.c index 76cb790834a..ffe571ab88a 100644 --- a/dlls/d3drm/tests/d3drm.c +++ b/dlls/d3drm/tests/d3drm.c @@ -172,6 +172,7 @@ static void test_MeshBuilder(void) HRESULT hr; LPDIRECT3DRM pD3DRM; LPDIRECT3DRMMESHBUILDER pMeshBuilder; + LPDIRECT3DRMMESH mesh; D3DRMLOADMEMORY info; int val; DWORD val1, val2, val3; @@ -282,6 +283,19 @@ static void test_MeshBuilder(void) hr = IDirect3DRM_CreateMeshBuilder(pD3DRM, &pMeshBuilder); ok(hr == D3DRM_OK, "Cannot get IDirect3DRMMeshBuilder interface (hr = %x)\n", hr); + /* No group in mesh when mesh builder is not loaded */ + hr = IDirect3DRMMeshBuilder_CreateMesh(pMeshBuilder, &mesh); + ok(hr == D3DRM_OK, "CreateMesh failed returning hr = %x\n", hr); + if (hr == D3DRM_OK) + { + DWORD nb_groups; + + nb_groups = IDirect3DRMMesh_GetGroupCount(mesh); + ok(nb_groups == 0, "GetCroupCount returned %u\n", nb_groups); + + IDirect3DRMMesh_Release(mesh); + } + info.lpMemory = data_full; info.dSize = strlen(data_full); hr = IDirect3DRMMeshBuilder_Load(pMeshBuilder, &info, NULL, D3DRMLOAD_FROMMEMORY, NULL, NULL); @@ -325,6 +339,18 @@ static void test_MeshBuilder(void) ok(f[6] == 2 , "Wrong component f[6] = %d (expected 2)\n", f[6]); ok(f[7] == 0 , "Wrong component f[7] = %d (expected 0)\n", f[7]); + hr = IDirect3DRMMeshBuilder_CreateMesh(pMeshBuilder, &mesh); + ok(hr == D3DRM_OK, "CreateMesh failed returning hr = %x\n", hr); + if (hr == D3DRM_OK) + { + DWORD nb_groups; + + nb_groups = IDirect3DRMMesh_GetGroupCount(mesh); + ok(nb_groups == 1, "GetCroupCount returned %u\n", nb_groups); + + IDirect3DRMMesh_Release(mesh); + } + hr = IDirect3DRMMeshBuilder_Scale(pMeshBuilder, 2, 3 ,4); ok(hr == D3DRM_OK, "Scale failed returning hr = %x\n", hr); -- 2.11.4.GIT