d3dx9_36: Allow NULL pointer for optional arguments of D3DXIntersectTri.

oldstable
Sebastian Lackner 2014-11-08 19:29:53 +01:00 committed by Alexandre Julliard
parent 275ee4b376
commit b69038e3d9
2 changed files with 12 additions and 3 deletions

View File

@ -2407,9 +2407,9 @@ BOOL WINAPI D3DXIntersectTri(const D3DXVECTOR3 *p0, const D3DXVECTOR3 *p1, const
D3DXVec4Transform(&vec, &vec, &m);
if ( (vec.x >= 0.0f) && (vec.y >= 0.0f) && (vec.x + vec.y <= 1.0f) && (vec.z >= 0.0f) )
{
*pu = vec.x;
*pv = vec.y;
*pdist = fabsf( vec.z );
if (pu) *pu = vec.x;
if (pv) *pv = vec.y;
if (pdist) *pdist = fabsf( vec.z );
return TRUE;
}
}

View File

@ -1104,6 +1104,9 @@ static void D3DXIntersectTriTest(void)
ok( compare(exp_v,got_v), "Expected v = %f, got %f\n",exp_v,got_v);
ok( compare(exp_dist,got_dist), "Expected distance = %f, got %f\n",exp_dist,got_dist);
got_res = D3DXIntersectTri(&vertex[0], &vertex[1], &vertex[2], &position, &ray, NULL, NULL, NULL);
ok(got_res == exp_res, "Expected result = %d, got %d\n", exp_res, got_res);
/*Only positive ray is taken in account*/
vertex[0].x = 1.0f; vertex[0].y = 0.0f; vertex[0].z = 0.0f;
@ -1119,6 +1122,9 @@ static void D3DXIntersectTriTest(void)
got_res = D3DXIntersectTri(&vertex[0],&vertex[1],&vertex[2],&position,&ray,&got_u,&got_v,&got_dist);
ok( got_res == exp_res, "Expected result = %d, got %d\n",exp_res,got_res);
got_res = D3DXIntersectTri(&vertex[0], &vertex[1], &vertex[2], &position, &ray, NULL, NULL, NULL);
ok(got_res == exp_res, "Expected result = %d, got %d\n", exp_res, got_res);
/*Intersection between ray and triangle in a same plane is considered as empty*/
vertex[0].x = 4.0f; vertex[0].y = 0.0f; vertex[0].z = 0.0f;
@ -1133,6 +1139,9 @@ static void D3DXIntersectTriTest(void)
got_res = D3DXIntersectTri(&vertex[0],&vertex[1],&vertex[2],&position,&ray,&got_u,&got_v,&got_dist);
ok( got_res == exp_res, "Expected result = %d, got %d\n",exp_res,got_res);
got_res = D3DXIntersectTri(&vertex[0], &vertex[1], &vertex[2], &position, &ray, NULL, NULL, NULL);
ok(got_res == exp_res, "Expected result = %d, got %d\n", exp_res, got_res);
}
static void D3DXCreateMeshTest(void)