From 6c6668a9721359a491ea6c4e8f838b0e0f7c1788 Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Mon, 5 May 2008 11:17:49 -0700 Subject: [PATCH] d3dx8: Dynamically import d3dx8 in the tests so the tests can be skipped if the dll is not found --- dlls/d3dx8/tests/Makefile.in | 2 +- dlls/d3dx8/tests/math.c | 364 +++++++++++++++++++++++++++++++----------- 2 files changed, 269 insertions(+), 97 deletions(-) diff --git a/dlls/d3dx8/tests/Makefile.in b/dlls/d3dx8/tests/Makefile.in index 5306634..55c705e 100644 --- a/dlls/d3dx8/tests/Makefile.in +++ b/dlls/d3dx8/tests/Makefile.in @@ -3,7 +3,7 @@ TOPOBJDIR = ../../.. SRCDIR = @srcdir@ VPATH = @srcdir@ TESTDLL = d3dx8.dll -IMPORTS = dxguid d3dx8 kernel32 +IMPORTS = dxguid kernel32 CTESTS = math.c diff --git a/dlls/d3dx8/tests/math.c b/dlls/d3dx8/tests/math.c index 6bec5e5..c196c27 100644 --- a/dlls/d3dx8/tests/math.c +++ b/dlls/d3dx8/tests/math.c @@ -1,5 +1,6 @@ /* * Copyright 2007 David Adam + * Copyright 2008 Google (Maarten lankhorst) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -21,6 +22,166 @@ #include "wine/test.h" +/* Long live sed! */ +D3DXCOLOR* (WINAPI *pD3DXColorAdjustContrast)(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s); +D3DXCOLOR* (WINAPI *pD3DXColorAdjustSaturation)(D3DXCOLOR *pout, CONST D3DXCOLOR *pc, FLOAT s); +D3DXMATRIX* (WINAPI *pD3DXMatrixAffineTransformation)(D3DXMATRIX *pout, FLOAT scaling, CONST D3DXVECTOR3 *rotationcenter, CONST D3DXQUATERNION *rotation, CONST D3DXVECTOR3 *translation); +D3DXMATRIX* (WINAPI *pD3DXMatrixInverse)(D3DXMATRIX *pout, FLOAT *pdeterminant, CONST D3DXMATRIX *pm); +D3DXMATRIX* (WINAPI *pD3DXMatrixLookAtLH)(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup); +D3DXMATRIX* (WINAPI *pD3DXMatrixLookAtRH)(D3DXMATRIX *pout, CONST D3DXVECTOR3 *peye, CONST D3DXVECTOR3 *pat, CONST D3DXVECTOR3 *pup); +D3DXMATRIX* (WINAPI *pD3DXMatrixMultiply)(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2); +D3DXMATRIX* (WINAPI *pD3DXMatrixMultiplyTranspose)(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2); +D3DXMATRIX* (WINAPI *pD3DXMatrixMultiplyTranspose)(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2); +D3DXMATRIX* (WINAPI *pD3DXMatrixOrthoLH)(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); +D3DXMATRIX* (WINAPI *pD3DXMatrixOrthoLH)(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); +D3DXMATRIX* (WINAPI *pD3DXMatrixOrthoOffCenterLH)(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); +D3DXMATRIX* (WINAPI *pD3DXMatrixOrthoOffCenterRH)(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); +D3DXMATRIX* (WINAPI *pD3DXMatrixOrthoRH)(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); +D3DXMATRIX* (WINAPI *pD3DXMatrixPerspectiveFovLH)(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf); +D3DXMATRIX* (WINAPI *pD3DXMatrixPerspectiveFovRH)(D3DXMATRIX *pout, FLOAT fovy, FLOAT aspect, FLOAT zn, FLOAT zf); +D3DXMATRIX* (WINAPI *pD3DXMatrixPerspectiveLH)(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); +D3DXMATRIX* (WINAPI *pD3DXMatrixPerspectiveOffCenterLH)(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); +D3DXMATRIX* (WINAPI *pD3DXMatrixPerspectiveOffCenterRH)(D3DXMATRIX *pout, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); +D3DXMATRIX* (WINAPI *pD3DXMatrixPerspectiveRH)(D3DXMATRIX *pout, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); +D3DXMATRIX* (WINAPI *pD3DXMatrixReflect)(D3DXMATRIX *pout, CONST D3DXPLANE *pplane); +D3DXMATRIX* (WINAPI *pD3DXMatrixRotationAxis)(D3DXMATRIX *pout, CONST D3DXVECTOR3 *pv, FLOAT angle); +D3DXMATRIX* (WINAPI *pD3DXMatrixRotationQuaternion)(D3DXMATRIX *pout, CONST D3DXQUATERNION *pq); +D3DXMATRIX* (WINAPI *pD3DXMatrixRotationX)(D3DXMATRIX *pout, FLOAT angle); +D3DXMATRIX* (WINAPI *pD3DXMatrixRotationY)(D3DXMATRIX *pout, FLOAT angle); +D3DXMATRIX* (WINAPI *pD3DXMatrixRotationYawPitchRoll)(D3DXMATRIX *pout, FLOAT yaw, FLOAT pitch, FLOAT roll); +D3DXMATRIX* (WINAPI *pD3DXMatrixRotationYawPitchRoll)(D3DXMATRIX *pout, FLOAT yaw, FLOAT pitch, FLOAT roll); +D3DXMATRIX* (WINAPI *pD3DXMatrixRotationZ)(D3DXMATRIX *pout, FLOAT angle); +D3DXMATRIX* (WINAPI *pD3DXMatrixScaling)(D3DXMATRIX *pout, FLOAT sx, FLOAT sy, FLOAT sz); +D3DXMATRIX* (WINAPI *pD3DXMatrixShadow)(D3DXMATRIX *pout, CONST D3DXVECTOR4 *plight, CONST D3DXPLANE *pPlane); +D3DXMATRIX* (WINAPI *pD3DXMatrixTransformation)(D3DXMATRIX *pout, CONST D3DXVECTOR3 *pscalingcenter, CONST D3DXQUATERNION *pscalingrotation, CONST D3DXVECTOR3 *pscaling, CONST D3DXVECTOR3 *protationcenter, CONST D3DXQUATERNION *protation, CONST D3DXVECTOR3 *ptranslation); +D3DXMATRIX* (WINAPI *pD3DXMatrixTranslation)(D3DXMATRIX *pout, FLOAT x, FLOAT y, FLOAT z); +D3DXMATRIX* (WINAPI *pD3DXMatrixTranspose)(D3DXMATRIX *pout, CONST D3DXMATRIX *pm); +FLOAT (WINAPI *pD3DXMatrixfDeterminant)(CONST D3DXMATRIX *pm); +D3DXPLANE* (WINAPI *pD3DXPlaneFromPointNormal)(D3DXPLANE *pout, CONST D3DXVECTOR3 *pvpoint, CONST D3DXVECTOR3 *pvnormal); +D3DXPLANE* (WINAPI *pD3DXPlaneFromPoints)(D3DXPLANE *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3); +D3DXVECTOR3* (WINAPI *pD3DXPlaneIntersectLine)(D3DXVECTOR3 *pout, CONST D3DXPLANE *pp, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2); +D3DXPLANE* (WINAPI *pD3DXPlaneNormalize)(D3DXPLANE *pout, CONST D3DXPLANE *pp); +D3DXPLANE* (WINAPI *pD3DXPlaneTransform)(D3DXPLANE *pout, CONST D3DXPLANE *pplane, CONST D3DXMATRIX *pm); +D3DXQUATERNION* (WINAPI *pD3DXQuaternionBaryCentric)(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, CONST D3DXQUATERNION *pq3, FLOAT f, FLOAT g); +D3DXQUATERNION* (WINAPI *pD3DXQuaternionExp)(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq); +D3DXQUATERNION* (WINAPI *pD3DXQuaternionInverse)(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq); +D3DXQUATERNION* (WINAPI *pD3DXQuaternionLn)(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq); +D3DXQUATERNION* (WINAPI *pD3DXQuaternionMultiply)(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2); +D3DXQUATERNION* (WINAPI *pD3DXQuaternionNormalize)(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq); +D3DXQUATERNION* (WINAPI *pD3DXQuaternionRotationAxis)(D3DXQUATERNION *pout, CONST D3DXVECTOR3 *pv, FLOAT angle); +D3DXQUATERNION* (WINAPI *pD3DXQuaternionRotationMatrix)(D3DXQUATERNION *pout, CONST D3DXMATRIX *pm); +D3DXQUATERNION* (WINAPI *pD3DXQuaternionRotationYawPitchRoll)(D3DXQUATERNION *pout, FLOAT yaw, FLOAT pitch, FLOAT roll); +D3DXQUATERNION* (WINAPI *pD3DXQuaternionSlerp)(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, FLOAT t); +D3DXQUATERNION* (WINAPI *pD3DXQuaternionSquad)(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq1, CONST D3DXQUATERNION *pq2, CONST D3DXQUATERNION *pq3, CONST D3DXQUATERNION *pq4, FLOAT t); +void (WINAPI *pD3DXQuaternionToAxisAngle)(CONST D3DXQUATERNION *pq, D3DXVECTOR3 *paxis, FLOAT *pangle); +D3DXVECTOR2* (WINAPI *pD3DXVec2BaryCentric)(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pv3, FLOAT f, FLOAT g); +D3DXVECTOR2* (WINAPI *pD3DXVec2CatmullRom)(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv0, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pv3, FLOAT s); +D3DXVECTOR2* (WINAPI *pD3DXVec2Hermite)(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv1, CONST D3DXVECTOR2 *pt1, CONST D3DXVECTOR2 *pv2, CONST D3DXVECTOR2 *pt2, FLOAT s); +D3DXVECTOR2* (WINAPI *pD3DXVec2Normalize)(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv); +D3DXVECTOR4* (WINAPI *pD3DXVec2Transform)(D3DXVECTOR4 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm); +D3DXVECTOR2* (WINAPI *pD3DXVec2TransformCoord)(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm); +D3DXVECTOR2* (WINAPI *pD3DXVec2TransformNormal)(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm); +D3DXVECTOR2* (WINAPI *pD3DXVec2TransformCoord)(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm); +D3DXVECTOR2* (WINAPI *pD3DXVec2TransformNormal)(D3DXVECTOR2 *pout, CONST D3DXVECTOR2 *pv, CONST D3DXMATRIX *pm); +D3DXVECTOR3* (WINAPI *pD3DXVec3BaryCentric)(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3, FLOAT f, FLOAT g); +D3DXVECTOR3* (WINAPI *pD3DXVec3CatmullRom)( D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv0, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pv3, FLOAT s); +D3DXVECTOR3* (WINAPI *pD3DXVec3Hermite)(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv1, CONST D3DXVECTOR3 *pt1, CONST D3DXVECTOR3 *pv2, CONST D3DXVECTOR3 *pt2, FLOAT s); +D3DXVECTOR3* (WINAPI *pD3DXVec3Normalize)(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv); +D3DXVECTOR3* (WINAPI *pD3DXVec3Project)(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT8 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld); +D3DXVECTOR4* (WINAPI *pD3DXVec3Transform)(D3DXVECTOR4 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm); +D3DXVECTOR3* (WINAPI *pD3DXVec3TransformCoord)(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm); +D3DXVECTOR3* (WINAPI *pD3DXVec3TransformNormal)(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm); +D3DXVECTOR3* (WINAPI *pD3DXVec3TransformCoord)(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm); +D3DXVECTOR3* (WINAPI *pD3DXVec3TransformNormal)(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DXMATRIX *pm); +D3DXVECTOR3* (WINAPI *pD3DXVec3Unproject)(D3DXVECTOR3 *pout, CONST D3DXVECTOR3 *pv, CONST D3DVIEWPORT8 *pviewport, CONST D3DXMATRIX *pprojection, CONST D3DXMATRIX *pview, CONST D3DXMATRIX *pworld); +D3DXVECTOR4* (WINAPI *pD3DXVec4BaryCentric)(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT f, FLOAT g); +D3DXVECTOR4* (WINAPI *pD3DXVec4CatmullRom)(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv0, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3, FLOAT s); +D3DXVECTOR4* (WINAPI *pD3DXVec4Cross)(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pv3); +D3DXVECTOR4* (WINAPI *pD3DXVec4Hermite)(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv1, CONST D3DXVECTOR4 *pt1, CONST D3DXVECTOR4 *pv2, CONST D3DXVECTOR4 *pt2, FLOAT s); +D3DXVECTOR4* (WINAPI *pD3DXVec4Normalize)(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv); +D3DXVECTOR4* (WINAPI *pD3DXVec4Transform)(D3DXVECTOR4 *pout, CONST D3DXVECTOR4 *pv, CONST D3DXMATRIX *pm); + +static void D3DX8_Imports(HMODULE hD3DX8) +{ + pD3DXColorAdjustContrast = (void *)GetProcAddress(hD3DX8, "D3DXColorAdjustContrast"); + pD3DXColorAdjustSaturation = (void *)GetProcAddress(hD3DX8, "D3DXColorAdjustSaturation"); + pD3DXMatrixAffineTransformation = (void *)GetProcAddress(hD3DX8, "D3DXMatrixAffineTransformation"); + pD3DXMatrixInverse = (void *)GetProcAddress(hD3DX8, "D3DXMatrixInverse"); + pD3DXMatrixLookAtLH = (void *)GetProcAddress(hD3DX8, "D3DXMatrixLookAtLH"); + pD3DXMatrixLookAtRH = (void *)GetProcAddress(hD3DX8, "D3DXMatrixLookAtRH"); + pD3DXMatrixMultiply = (void *)GetProcAddress(hD3DX8, "D3DXMatrixMultiply"); + pD3DXMatrixMultiplyTranspose = (void *)GetProcAddress(hD3DX8, "D3DXMatrixMultiplyTranspose"); + pD3DXMatrixMultiplyTranspose = (void *)GetProcAddress(hD3DX8, "D3DXMatrixMultiplyTranspose"); + pD3DXMatrixOrthoLH = (void *)GetProcAddress(hD3DX8, "D3DXMatrixOrthoLH"); + pD3DXMatrixOrthoLH = (void *)GetProcAddress(hD3DX8, "D3DXMatrixOrthoLH"); + pD3DXMatrixOrthoOffCenterLH = (void *)GetProcAddress(hD3DX8, "D3DXMatrixOrthoOffCenterLH"); + pD3DXMatrixOrthoOffCenterRH = (void *)GetProcAddress(hD3DX8, "D3DXMatrixOrthoOffCenterRH"); + pD3DXMatrixOrthoRH = (void *)GetProcAddress(hD3DX8, "D3DXMatrixOrthoRH"); + pD3DXMatrixPerspectiveFovLH = (void *)GetProcAddress(hD3DX8, "D3DXMatrixPerspectiveFovLH"); + pD3DXMatrixPerspectiveFovRH = (void *)GetProcAddress(hD3DX8, "D3DXMatrixPerspectiveFovRH"); + pD3DXMatrixPerspectiveLH = (void *)GetProcAddress(hD3DX8, "D3DXMatrixPerspectiveLH"); + pD3DXMatrixPerspectiveOffCenterLH = (void *)GetProcAddress(hD3DX8, "D3DXMatrixPerspectiveOffCenterLH"); + pD3DXMatrixPerspectiveOffCenterRH = (void *)GetProcAddress(hD3DX8, "D3DXMatrixPerspectiveOffCenterRH"); + pD3DXMatrixPerspectiveRH = (void *)GetProcAddress(hD3DX8, "D3DXMatrixPerspectiveRH"); + pD3DXMatrixReflect = (void *)GetProcAddress(hD3DX8, "D3DXMatrixReflect"); + pD3DXMatrixRotationAxis = (void *)GetProcAddress(hD3DX8, "D3DXMatrixRotationAxis"); + pD3DXMatrixRotationQuaternion = (void *)GetProcAddress(hD3DX8, "D3DXMatrixRotationQuaternion"); + pD3DXMatrixRotationX = (void *)GetProcAddress(hD3DX8, "D3DXMatrixRotationX"); + pD3DXMatrixRotationY = (void *)GetProcAddress(hD3DX8, "D3DXMatrixRotationY"); + pD3DXMatrixRotationYawPitchRoll = (void *)GetProcAddress(hD3DX8, "D3DXMatrixRotationYawPitchRoll"); + pD3DXMatrixRotationYawPitchRoll = (void *)GetProcAddress(hD3DX8, "D3DXMatrixRotationYawPitchRoll"); + pD3DXMatrixRotationZ = (void *)GetProcAddress(hD3DX8, "D3DXMatrixRotationZ"); + pD3DXMatrixScaling = (void *)GetProcAddress(hD3DX8, "D3DXMatrixScaling"); + pD3DXMatrixShadow = (void *)GetProcAddress(hD3DX8, "D3DXMatrixShadow"); + pD3DXMatrixTransformation = (void *)GetProcAddress(hD3DX8, "D3DXMatrixTransformation"); + pD3DXMatrixTranslation = (void *)GetProcAddress(hD3DX8, "D3DXMatrixTranslation"); + pD3DXMatrixTranspose = (void *)GetProcAddress(hD3DX8, "D3DXMatrixTranspose"); + pD3DXMatrixfDeterminant = (void *)GetProcAddress(hD3DX8, "D3DXMatrixfDeterminant"); + pD3DXPlaneFromPointNormal = (void *)GetProcAddress(hD3DX8, "D3DXPlaneFromPointNormal"); + pD3DXPlaneFromPoints = (void *)GetProcAddress(hD3DX8, "D3DXPlaneFromPoints"); + pD3DXPlaneIntersectLine = (void *)GetProcAddress(hD3DX8, "D3DXPlaneIntersectLine"); + pD3DXPlaneNormalize = (void *)GetProcAddress(hD3DX8, "D3DXPlaneNormalize"); + pD3DXPlaneTransform = (void *)GetProcAddress(hD3DX8, "D3DXPlaneTransform"); + pD3DXQuaternionBaryCentric = (void *)GetProcAddress(hD3DX8, "D3DXQuaternionBaryCentric"); + pD3DXQuaternionExp = (void *)GetProcAddress(hD3DX8, "D3DXQuaternionExp"); + pD3DXQuaternionInverse = (void *)GetProcAddress(hD3DX8, "D3DXQuaternionInverse"); + pD3DXQuaternionLn = (void *)GetProcAddress(hD3DX8, "D3DXQuaternionLn"); + pD3DXQuaternionMultiply = (void *)GetProcAddress(hD3DX8, "D3DXQuaternionMultiply"); + pD3DXQuaternionNormalize = (void *)GetProcAddress(hD3DX8, "D3DXQuaternionNormalize"); + pD3DXQuaternionRotationAxis = (void *)GetProcAddress(hD3DX8, "D3DXQuaternionRotationAxis"); + pD3DXQuaternionRotationMatrix = (void *)GetProcAddress(hD3DX8, "D3DXQuaternionRotationMatrix"); + pD3DXQuaternionRotationYawPitchRoll = (void *)GetProcAddress(hD3DX8, "D3DXQuaternionRotationYawPitchRoll"); + pD3DXQuaternionSlerp = (void *)GetProcAddress(hD3DX8, "D3DXQuaternionSlerp"); + pD3DXQuaternionSquad = (void *)GetProcAddress(hD3DX8, "D3DXQuaternionSquad"); + pD3DXQuaternionToAxisAngle = (void *)GetProcAddress(hD3DX8, "D3DXQuaternionToAxisAngle"); + pD3DXVec2BaryCentric = (void *)GetProcAddress(hD3DX8, "D3DXVec2BaryCentric"); + pD3DXVec2CatmullRom = (void *)GetProcAddress(hD3DX8, "D3DXVec2CatmullRom"); + pD3DXVec2Hermite = (void *)GetProcAddress(hD3DX8, "D3DXVec2Hermite"); + pD3DXVec2Normalize = (void *)GetProcAddress(hD3DX8, "D3DXVec2Normalize"); + pD3DXVec2Transform = (void *)GetProcAddress(hD3DX8, "D3DXVec2Transform"); + pD3DXVec2TransformCoord = (void *)GetProcAddress(hD3DX8, "D3DXVec2TransformCoord"); + pD3DXVec2TransformNormal = (void *)GetProcAddress(hD3DX8, "D3DXVec2TransformNormal"); + pD3DXVec2TransformCoord = (void *)GetProcAddress(hD3DX8, "D3DXVec2TransformCoord"); + pD3DXVec2TransformNormal = (void *)GetProcAddress(hD3DX8, "D3DXVec2TransformNormal"); + pD3DXVec3BaryCentric = (void *)GetProcAddress(hD3DX8, "D3DXVec3BaryCentric"); + pD3DXVec3CatmullRom = (void *)GetProcAddress(hD3DX8, "D3DXVec3CatmullRom"); + pD3DXVec3Hermite = (void *)GetProcAddress(hD3DX8, "D3DXVec3Hermite"); + pD3DXVec3Normalize = (void *)GetProcAddress(hD3DX8, "D3DXVec3Normalize"); + pD3DXVec3Project = (void *)GetProcAddress(hD3DX8, "D3DXVec3Project"); + pD3DXVec3Transform = (void *)GetProcAddress(hD3DX8, "D3DXVec3Transform"); + pD3DXVec3TransformCoord = (void *)GetProcAddress(hD3DX8, "D3DXVec3TransformCoord"); + pD3DXVec3TransformNormal = (void *)GetProcAddress(hD3DX8, "D3DXVec3TransformNormal"); + pD3DXVec3TransformCoord = (void *)GetProcAddress(hD3DX8, "D3DXVec3TransformCoord"); + pD3DXVec3TransformNormal = (void *)GetProcAddress(hD3DX8, "D3DXVec3TransformNormal"); + pD3DXVec3Unproject = (void *)GetProcAddress(hD3DX8, "D3DXVec3Unproject"); + pD3DXVec4BaryCentric = (void *)GetProcAddress(hD3DX8, "D3DXVec4BaryCentric"); + pD3DXVec4CatmullRom = (void *)GetProcAddress(hD3DX8, "D3DXVec4CatmullRom"); + pD3DXVec4Cross = (void *)GetProcAddress(hD3DX8, "D3DXVec4Cross"); + pD3DXVec4Hermite = (void *)GetProcAddress(hD3DX8, "D3DXVec4Hermite"); + pD3DXVec4Normalize = (void *)GetProcAddress(hD3DX8, "D3DXVec4Normalize"); + pD3DXVec4Transform = (void *)GetProcAddress(hD3DX8, "D3DXVec4Transform"); +} + #define admitted_error 0.0001f #define expect_color(expectedcolor,gotcolor) ok((fabs(expectedcolor.r-gotcolor.r)1.0f */ expectedvec.x = 1.0f/11.0f; expectedvec.y = 2.0f/11.0f; expectedvec.z = 4.0f/11.0f; expected = 0.0f; - D3DXQuaternionToAxisAngle(&q,&axis,&angle); + pD3DXQuaternionToAxisAngle(&q,&axis,&angle); expect_vec3(expectedvec,axis); ok(fabs( angle - expected ) < admitted_error, "Expected: %f, Got: %f\n", expected, angle); /* Test the null quaternion */ expectedvec.x = 1.0f; expectedvec.y = 0.0f; expectedvec.z = 0.0f; expected = 0.0f; - D3DXQuaternionToAxisAngle(&nul,&axis,&angle); + pD3DXQuaternionToAxisAngle(&nul,&axis,&angle); expect_vec3(expectedvec,axis); ok(fabs( angle - expected ) < admitted_error, "Expected: %f, Got: %f\n", expected, angle); } @@ -817,12 +978,12 @@ static void D3X8Vector2Test(void) /*_______________D3DXVec2BaryCentric___________________*/ expectedvec.x = -12.0f; expectedvec.y = -21.0f; - D3DXVec2BaryCentric(&gotvec,&u,&v,&w,coeff1,coeff2); + pD3DXVec2BaryCentric(&gotvec,&u,&v,&w,coeff1,coeff2); expect_vec(expectedvec,gotvec); /*_______________D3DXVec2CatmullRom____________________*/ expectedvec.x = 5820.25f; expectedvec.y = -3654.5625f; - D3DXVec2CatmullRom(&gotvec,&u,&v,&w,&x,scale); + pD3DXVec2CatmullRom(&gotvec,&u,&v,&w,&x,scale); expect_vec(expectedvec,gotvec); /*_______________D3DXVec2CCW__________________________*/ @@ -851,7 +1012,7 @@ static void D3X8Vector2Test(void) /*_______________D3DXVec2Hermite__________________________*/ expectedvec.x = 2604.625f; expectedvec.y = -4533.0f; - D3DXVec2Hermite(&gotvec,&u,&v,&w,&x,scale); + pD3DXVec2Hermite(&gotvec,&u,&v,&w,&x,scale); expect_vec(expectedvec,gotvec); /*_______________D3DXVec2Length__________________________*/ @@ -904,11 +1065,11 @@ static void D3X8Vector2Test(void) /*_______________D3DXVec2Normalize_________________________*/ expectedvec.x = 0.6f; expectedvec.y = 0.8f; - D3DXVec2Normalize(&gotvec,&u); + pD3DXVec2Normalize(&gotvec,&u); expect_vec(expectedvec,gotvec); /* Test the nul vector */ expectedvec.x = 0.0f; expectedvec.y = 0.0f; - D3DXVec2Normalize(&gotvec,&nul); + pD3DXVec2Normalize(&gotvec,&nul); expect_vec(expectedvec,gotvec); /*_______________D3DXVec2Scale____________________________*/ @@ -933,22 +1094,22 @@ static void D3X8Vector2Test(void) /*_______________D3DXVec2Transform_______________________*/ expectedtrans.x = 36.0f; expectedtrans.y = 44.0f; expectedtrans.z = 52.0f; expectedtrans.w = 60.0f; - D3DXVec2Transform(&gottrans,&u,&mat); + pD3DXVec2Transform(&gottrans,&u,&mat); expect_vec4(expectedtrans,gottrans); /*_______________D3DXVec2TransformCoord_______________________*/ expectedvec.x = 0.6f; expectedvec.y = 11.0f/15.0f; - D3DXVec2TransformCoord(&gotvec,&u,&mat); + pD3DXVec2TransformCoord(&gotvec,&u,&mat); expect_vec(expectedvec,gotvec); /* Test the nul projected vector */ nulproj.x = -2.0f; nulproj.y = -1.0f; expectedvec.x = 0.0f; expectedvec.y = 0.0f; - D3DXVec2TransformCoord(&gotvec,&nulproj,&mat); + pD3DXVec2TransformCoord(&gotvec,&nulproj,&mat); expect_vec(expectedvec,gotvec); /*_______________D3DXVec2TransformNormal______________________*/ expectedvec.x = 23.0f; expectedvec.y = 30.0f; - D3DXVec2TransformNormal(&gotvec,&u,&mat); + pD3DXVec2TransformNormal(&gotvec,&u,&mat); expect_vec(expectedvec,gotvec); } @@ -1002,13 +1163,13 @@ static void D3X8Vector3Test(void) /*_______________D3DXVec3BaryCentric___________________*/ expectedvec.x = -35.0f; expectedvec.y = -67.0; expectedvec.z = 15.0f; - D3DXVec3BaryCentric(&gotvec,&u,&v,&w,coeff1,coeff2); + pD3DXVec3BaryCentric(&gotvec,&u,&v,&w,coeff1,coeff2); expect_vec3(expectedvec,gotvec); /*_______________D3DXVec3CatmullRom____________________*/ expectedvec.x = 1458.0f; expectedvec.y = 22.1875f; expectedvec.z = 4141.375f; - D3DXVec3CatmullRom(&gotvec,&u,&v,&w,&x,scale); + pD3DXVec3CatmullRom(&gotvec,&u,&v,&w,&x,scale); expect_vec3(expectedvec,gotvec); /*_______________D3DXVec3Cross________________________*/ @@ -1035,7 +1196,7 @@ static void D3X8Vector3Test(void) /*_______________D3DXVec3Hermite__________________________*/ expectedvec.x = -6045.75f; expectedvec.y = -6650.0f; expectedvec.z = 1358.875f; - D3DXVec3Hermite(&gotvec,&u,&v,&w,&x,scale); + pD3DXVec3Hermite(&gotvec,&u,&v,&w,&x,scale); expect_vec3(expectedvec,gotvec); /*_______________D3DXVec3Length__________________________*/ @@ -1088,17 +1249,17 @@ static void D3X8Vector3Test(void) /*_______________D3DXVec3Normalize_________________________*/ expectedvec.x = 9.0f/11.0f; expectedvec.y = 6.0f/11.0f; expectedvec.z = 2.0f/11.0f; - D3DXVec3Normalize(&gotvec,&u); + pD3DXVec3Normalize(&gotvec,&u); expect_vec3(expectedvec,gotvec); /* Test the nul vector */ expectedvec.x = 0.0f; expectedvec.y = 0.0f; expectedvec.z = 0.0f; - D3DXVec3Normalize(&gotvec,&nul); + pD3DXVec3Normalize(&gotvec,&nul); expect_vec3(expectedvec,gotvec); /*_______________D3DXVec3Project_________________________*/ expectedvec.x = 1135.721924f; expectedvec.y = 147.086914f; expectedvec.z = 0.153412f; - D3DXMatrixPerspectiveFovLH(&projection,D3DX_PI/4.0f,20.0f/17.0f,1.0f,1000.0f); - D3DXVec3Project(&gotvec,&u,&viewport,&projection,&view,&world); + pD3DXMatrixPerspectiveFovLH(&projection,D3DX_PI/4.0f,20.0f/17.0f,1.0f,1000.0f); + pD3DXVec3Project(&gotvec,&u,&viewport,&projection,&view,&world); expect_vec3(expectedvec,gotvec); /*_______________D3DXVec3Scale____________________________*/ @@ -1123,28 +1284,28 @@ static void D3X8Vector3Test(void) /*_______________D3DXVec3Transform_______________________*/ expectedtrans.x = 70.0f; expectedtrans.y = 88.0f; expectedtrans.z = 106.0f; expectedtrans.w = 124.0f; - D3DXVec3Transform(&gottrans,&u,&mat); + pD3DXVec3Transform(&gottrans,&u,&mat); expect_vec4(expectedtrans,gottrans); /*_______________D3DXVec3TransformCoord_______________________*/ expectedvec.x = 70.0f/124.0f; expectedvec.y = 88.0f/124.0f; expectedvec.z = 106.0f/124.0f; - D3DXVec3TransformCoord(&gotvec,&u,&mat); + pD3DXVec3TransformCoord(&gotvec,&u,&mat); expect_vec3(expectedvec,gotvec); /* Test the nul projected vector */ nulproj.x = 1.0f; nulproj.y = -1.0f, nulproj.z = -1.0f; expectedvec.x = 0.0f; expectedvec.y = 0.0f; expectedvec.z = 0.0f; - D3DXVec3TransformCoord(&gotvec,&nulproj,&mat); + pD3DXVec3TransformCoord(&gotvec,&nulproj,&mat); expect_vec3(expectedvec,gotvec); /*_______________D3DXVec3TransformNormal______________________*/ expectedvec.x = 57.0f; expectedvec.y = 74.0f; expectedvec.z = 91.0f; - D3DXVec3TransformNormal(&gotvec,&u,&mat); + pD3DXVec3TransformNormal(&gotvec,&u,&mat); expect_vec3(expectedvec,gotvec); /*_______________D3DXVec3Unproject_________________________*/ expectedvec.x = -2.913411f; expectedvec.y = 1.593215f; expectedvec.z = 0.380724f; - D3DXMatrixPerspectiveFovLH(&projection,D3DX_PI/4.0f,20.0f/17.0f,1.0f,1000.0f); - D3DXVec3Unproject(&gotvec,&u,&viewport,&projection,&view,&world); + pD3DXMatrixPerspectiveFovLH(&projection,D3DX_PI/4.0f,20.0f/17.0f,1.0f,1000.0f); + pD3DXVec3Unproject(&gotvec,&u,&viewport,&projection,&view,&world); expect_vec3(expectedvec,gotvec); } @@ -1182,17 +1343,17 @@ static void D3X8Vector4Test(void) /*_______________D3DXVec4BaryCentric____________________*/ expectedvec.x = 8.0f; expectedvec.y = 26.0; expectedvec.z = -44.0f; expectedvec.w = -41.0f; - D3DXVec4BaryCentric(&gotvec,&u,&v,&w,coeff1,coeff2); + pD3DXVec4BaryCentric(&gotvec,&u,&v,&w,coeff1,coeff2); expect_vec4(expectedvec,gotvec); /*_______________D3DXVec4CatmullRom____________________*/ expectedvec.x = 2754.625f; expectedvec.y = 2367.5625f; expectedvec.z = 1060.1875f; expectedvec.w = 131.3125f; - D3DXVec4CatmullRom(&gotvec,&u,&v,&w,&x,scale); + pD3DXVec4CatmullRom(&gotvec,&u,&v,&w,&x,scale); expect_vec4(expectedvec,gotvec); /*_______________D3DXVec4Cross_________________________*/ expectedvec.x = 390.0f; expectedvec.y = -393.0f; expectedvec.z = -316.0f; expectedvec.w = 166.0f; - D3DXVec4Cross(&gotvec,&u,&v,&w); + pD3DXVec4Cross(&gotvec,&u,&v,&w); expect_vec4(expectedvec,gotvec); /*_______________D3DXVec4Dot__________________________*/ @@ -1209,7 +1370,7 @@ static void D3X8Vector4Test(void) /*_______________D3DXVec4Hermite_________________________*/ expectedvec.x = 1224.625f; expectedvec.y = 3461.625f; expectedvec.z = -4758.875f; expectedvec.w = -5781.5f; - D3DXVec4Hermite(&gotvec,&u,&v,&w,&x,scale); + pD3DXVec4Hermite(&gotvec,&u,&v,&w,&x,scale); expect_vec4(expectedvec,gotvec); /*_______________D3DXVec4Length__________________________*/ @@ -1262,11 +1423,11 @@ static void D3X8Vector4Test(void) /*_______________D3DXVec4Normalize_________________________*/ expectedvec.x = 1.0f/11.0f; expectedvec.y = 2.0f/11.0f; expectedvec.z = 4.0f/11.0f; expectedvec.w = 10.0f/11.0f; - D3DXVec4Normalize(&gotvec,&u); + pD3DXVec4Normalize(&gotvec,&u); expect_vec4(expectedvec,gotvec); /* Test the nul vector */ expectedvec.x = 0.0f; expectedvec.y = 0.0f; expectedvec.z = 0.0f; expectedvec.w = 0.0f; - D3DXVec4Normalize(&gotvec,&nul); + pD3DXVec4Normalize(&gotvec,&nul); expect_vec4(expectedvec,gotvec); /*_______________D3DXVec4Scale____________________________*/ @@ -1291,12 +1452,21 @@ static void D3X8Vector4Test(void) /*_______________D3DXVec4Transform_______________________*/ expectedtrans.x = 177.0f; expectedtrans.y = 194.0f; expectedtrans.z = 211.0f; expectedtrans.w = 228.0f; - D3DXVec4Transform(&gottrans,&u,&mat); + pD3DXVec4Transform(&gottrans,&u,&mat); expect_vec4(expectedtrans,gottrans); } START_TEST(math) { + HMODULE hD3DX8; + hD3DX8 = LoadLibrary("d3dx8.dll"); + if (!hD3DX8) + { + skip("d3dx8 dll.not found\n"); + return; + } + D3DX8_Imports(hD3DX8); + D3DXColorTest(); D3DXMatrixTest(); D3DXPlaneTest(); @@ -1304,4 +1474,6 @@ START_TEST(math) D3X8Vector2Test(); D3X8Vector3Test(); D3X8Vector4Test(); + + FreeLibrary(hD3DX8); } -- 1.5.4.1