=?UTF-8?Q?Andr=C3=A9=20Hentschel=20?=: d3drm: Implement GetVertices for IDirect3DRMMeshBuilder3.

Alexandre Julliard julliard at winehq.org
Fri Jan 13 11:44:30 CST 2012


Module: wine
Branch: master
Commit: 33c7a865cb9087f2c0fc289211e0d7e216a1aee4
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=33c7a865cb9087f2c0fc289211e0d7e216a1aee4

Author: André Hentschel <nerv at dawncrow.de>
Date:   Fri Jan 13 00:22:04 2012 +0100

d3drm: Implement GetVertices for IDirect3DRMMeshBuilder3.

---

 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 409e659..34a8d4c 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 d4bb77d..f021e2c 100644
--- a/dlls/d3drm/tests/d3drm.c
+++ b/dlls/d3drm/tests/d3drm.c
@@ -208,8 +208,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;




More information about the wine-cvs mailing list