[10/10] d3drm: Implement GetVertices for IDirect3DRMMeshBuilder3 (try 2)

André Hentschel nerv at dawncrow.de
Thu Jan 12 17:22:04 CST 2012


---
 dlls/d3drm/meshbuilder.c |   14 ++++++++++----
 dlls/d3drm/tests/d3drm.c |    4 ++--
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/dlls/d3drm/meshbuilder.c b/dlls/d3drm/meshbuilder.c
index 9709a7e..b57a7e3 100644
--- a/dlls/d3drm/meshbuilder.c
+++ b/dlls/d3drm/meshbuilder.c
@@ -1845,14 +1845,20 @@ static HRESULT WINAPI IDirect3DRMMeshBuilder3Impl_SetVertices(IDirect3DRMMeshBui
 }
 
 static HRESULT WINAPI IDirect3DRMMeshBuilder3Impl_GetVertices(IDirect3DRMMeshBuilder3* iface,
-                                                              DWORD IndexFirst, LPDWORD count,
-                                                              LPD3DVECTOR vector)
+                                                              DWORD IndexFirst, LPDWORD vcount,
+                                                              LPD3DVECTOR vertices)
 {
     IDirect3DRMMeshBuilderImpl *This = impl_from_IDirect3DRMMeshBuilder3(iface);
+    DWORD count = This->nb_vertices - IndexFirst;
 
-    FIXME("(%p)->(%u,%p,%p): stub\n", This, IndexFirst, count, vector);
+    TRACE("(%p)->(%u,%p,%p)\n", This, IndexFirst, vcount, vertices);
 
-    return E_NOTIMPL;
+    if (vcount)
+        *vcount = count;
+    if (vertices && This->nb_vertices)
+        memcpy(vertices, This->pVertices + IndexFirst, count * sizeof(D3DVECTOR));
+
+    return D3DRM_OK;
 }
 
 static HRESULT WINAPI IDirect3DRMMeshBuilder3Impl_SetNormals(IDirect3DRMMeshBuilder3* iface,
diff --git a/dlls/d3drm/tests/d3drm.c b/dlls/d3drm/tests/d3drm.c
index 2f930db..ff33279 100644
--- a/dlls/d3drm/tests/d3drm.c
+++ b/dlls/d3drm/tests/d3drm.c
@@ -209,8 +209,8 @@ static void test_MeshBuilder3(void)
     ok(val == 3, "Wrong number of faces %d (must be 3)\n", val);
 
     hr = IDirect3DRMMeshBuilder3_GetVertices(pMeshBuilder3, 0, &val1, NULL);
-    todo_wine ok(hr == D3DRM_OK, "Cannot get vertices information (hr = %x)\n", hr);
-    todo_wine ok(val1 == 4, "Wrong number of vertices %d (must be 4)\n", val1);
+    ok(hr == D3DRM_OK, "Cannot get vertices information (hr = %x)\n", hr);
+    ok(val1 == 4, "Wrong number of vertices %d (must be 4)\n", val1);
 
     valu = 1.23f;
     valv = 3.21f;
-- 

Best Regards, André Hentschel
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Nachrichtenteil als Anhang
URL: <http://www.winehq.org/pipermail/wine-patches/attachments/20120113/c01d7eca/attachment.ksh>


More information about the wine-patches mailing list