[PATCH 7/7] d3dx9: Test raw vertex data for D3DXCreateSphere.

Misha Koshelev misha680 at gmail.com
Wed Jun 23 22:19:02 CDT 2010


---
 dlls/d3dx9_36/tests/shape.c |   27 +++++++++++++++++++++++++--
 1 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/dlls/d3dx9_36/tests/shape.c b/dlls/d3dx9_36/tests/shape.c
index 5248405..b6202b6 100644
--- a/dlls/d3dx9_36/tests/shape.c
+++ b/dlls/d3dx9_36/tests/shape.c
@@ -26,7 +26,9 @@ static void test_create_sphere(IDirect3DDevice9* device)
     DWORD number_of_vertices;
     LPDIRECT3DVERTEXBUFFER9 vertex_buffer = NULL;
     D3DVERTEXBUFFER_DESC vertex_buffer_description;
-    BYTE *vertex_data = NULL;
+    D3DXVECTOR3 *vertex_data = NULL;
+    D3DXVECTOR3 test_vertex_data[8];
+    int i;
 
     hr = D3DXCreateSphere(NULL, 0.0, 0, 0, NULL, NULL);
     todo_wine ok( hr == D3DERR_INVALIDCALL, "Got result %x, expected %x (D3D_INVALIDCALL)\n",hr,D3DERR_INVALIDCALL);
@@ -69,9 +71,30 @@ static void test_create_sphere(IDirect3DDevice9* device)
                 todo_wine ok( vertex_buffer_description.FVF == D3DFVF_XYZ | D3DFVF_NORMAL, "Got result %x, expected %x (D3DFVF_XYZ | D3DFVF_NORMAL)\n",vertex_buffer_description.FVF,D3DFVF_XYZ | D3DFVF_NORMAL);
             }
 
-            hr = IDirect3DVertexBuffer9_Lock(vertex_buffer, 0, 0, &vertex_data, D3DLOCK_DISCARD);
+            hr = IDirect3DVertexBuffer9_Lock(vertex_buffer, 0, 0, (LPVOID *)&vertex_data, D3DLOCK_DISCARD);
             todo_wine ok( hr == D3D_OK, "Got result %x, expected 0 (D3D_OK)\n",hr);
 
+            if (vertex_data)
+            {
+                test_vertex_data[0].x = 0.0f; test_vertex_data[0].y = 0.0f; test_vertex_data[0].z = 1.0f;
+                test_vertex_data[1].x = 0.0f; test_vertex_data[1].y = 0.0f; test_vertex_data[1].z = 1.0f;
+                test_vertex_data[2].x = 0.0f; test_vertex_data[2].y = 1.0f; test_vertex_data[2].z = -0.0f;
+                test_vertex_data[3].x = 0.0f; test_vertex_data[3].y = 1.0f; test_vertex_data[3].z = -0.0f;
+                test_vertex_data[4].x = -0.0f; test_vertex_data[4].y = -1.0f; test_vertex_data[4].z = -0.0f;
+                test_vertex_data[5].x = -0.0f; test_vertex_data[5].y = -1.0f; test_vertex_data[5].z = -0.0f;
+                test_vertex_data[6].x = 0.0f; test_vertex_data[6].y = 0.0f; test_vertex_data[6].z = -1.0f;
+                test_vertex_data[7].x = 0.0f; test_vertex_data[7].y = 0.0f; test_vertex_data[7].z = -1.0f;
+
+                /* number_of_vertices*2 as we have both (x,y,z) and normals (nx,ny,nz) */
+                for (i=0; i<number_of_vertices*2; i++)
+                {
+                    /* comparisons of 0.0f with -0.0f do not quite seem to work correctly */
+                    todo_wine ok( vertex_data[i].x==test_vertex_data[i].x || (fabsf(vertex_data[i].x) < 0.0001f && fabsf(test_vertex_data[i].x) < 0.0001f), "Got result %f, expected %f\n",vertex_data[i].x,test_vertex_data[i].x);
+                    todo_wine ok( vertex_data[i].y==test_vertex_data[i].y || (fabsf(vertex_data[i].y) < 0.0001f && fabsf(test_vertex_data[i].y) < 0.0001f), "Got result %f, expected %f\n",vertex_data[i].y,test_vertex_data[i].y);
+                    todo_wine ok( vertex_data[i].z==test_vertex_data[i].z || (fabsf(vertex_data[i].z) < 0.0001f && fabsf(test_vertex_data[i].z) < 0.0001f), "Got result %f, expected %f\n",vertex_data[i].z,test_vertex_data[i].z);
+                }
+            }
+
             IDirect3DVertexBuffer9_Unlock(vertex_buffer);
         }
 
-- 
1.7.1






More information about the wine-patches mailing list