Module: wine Branch: master Commit: 329fb2f72890b3f283b8d0d4e0e3cbb16a4b5a0f URL: http://source.winehq.org/git/wine.git/?a=commit;h=329fb2f72890b3f283b8d0d4e0...
Author: Gediminas Jakutis gediminas@varciai.lt Date: Mon Oct 26 20:15:50 2015 +0200
d3dx9: Add adjacency generation for D3DXCreateCylinder().
Signed-off-by: Gediminas Jakutis gediminas@varciai.lt Signed-off-by: Matteo Bruni mbruni@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/d3dx9_36/mesh.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-)
diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c index 39d279d..6294036 100644 --- a/dlls/d3dx9_36/mesh.c +++ b/dlls/d3dx9_36/mesh.c @@ -4986,12 +4986,6 @@ HRESULT WINAPI D3DXCreateCylinder(struct IDirect3DDevice9 *device, float radius1 return D3DERR_INVALIDCALL; }
- if (adjacency) - { - FIXME("Case of adjacency != NULL not implemented.\n"); - return E_NOTIMPL; - } - number_of_vertices = 2 + (slices * (3 + stacks)); number_of_faces = 2 * slices + stacks * (2 * slices);
@@ -5143,6 +5137,23 @@ HRESULT WINAPI D3DXCreateCylinder(struct IDirect3DDevice9 *device, float radius1 free_sincos_table(&theta); cylinder->lpVtbl->UnlockIndexBuffer(cylinder); cylinder->lpVtbl->UnlockVertexBuffer(cylinder); + + if (adjacency) + { + if (FAILED(hr = D3DXCreateBuffer(number_of_faces * sizeof(DWORD) * 3, adjacency))) + { + cylinder->lpVtbl->Release(cylinder); + return hr; + } + + if (FAILED(hr = cylinder->lpVtbl->GenerateAdjacency(cylinder, 0.0f, (*adjacency)->lpVtbl->GetBufferPointer(*adjacency)))) + { + (*adjacency)->lpVtbl->Release(*adjacency); + cylinder->lpVtbl->Release(cylinder); + return hr; + } + } + *mesh = cylinder;
return D3D_OK;