=?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