Module: wine Branch: master Commit: e8f887dc184b6ad9953b3522440627c0a4d7736f URL: http://source.winehq.org/git/wine.git/?a=commit;h=e8f887dc184b6ad9953b352244...
Author: David Adam David.Adam@math.cnrs.fr Date: Tue Oct 30 15:16:12 2007 +0100
d3dx8: Implement D3DXMatrixTranspose.
---
dlls/d3dx8/d3dx8.spec | 2 +- dlls/d3dx8/math.c | 14 ++++++++++++++ dlls/d3dx8/tests/math.c | 8 ++++++++ include/d3dx8math.h | 1 + 4 files changed, 24 insertions(+), 1 deletions(-)
diff --git a/dlls/d3dx8/d3dx8.spec b/dlls/d3dx8/d3dx8.spec index 808e509..5a5efeb 100644 --- a/dlls/d3dx8/d3dx8.spec +++ b/dlls/d3dx8/d3dx8.spec @@ -22,7 +22,7 @@ @ stdcall D3DXVec4Transform(ptr ptr ptr) @ stdcall D3DXMatrixfDeterminant(ptr) @ stdcall D3DXMatrixMultiply(ptr ptr ptr) -@ stub D3DXMatrixTranspose +@ stdcall D3DXMatrixTranspose(ptr ptr) @ stub D3DXMatrixInverse @ stub D3DXMatrixScaling @ stub D3DXMatrixTranslation diff --git a/dlls/d3dx8/math.c b/dlls/d3dx8/math.c index 3c46581..7ce5e21 100644 --- a/dlls/d3dx8/math.c +++ b/dlls/d3dx8/math.c @@ -58,6 +58,20 @@ D3DXMATRIX* WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, C return pout; }
+D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm) +{ + int i,j; + + for (i=0; i<4; i++) + { + for (j=0; j<4; j++) + { + pout->m[i][j] = pm->m[j][i]; + } + } + return pout; +} + /*_________________D3DXQUATERNION________________*/
D3DXQUATERNION* WINAPI D3DXQuaternionNormalize(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq) diff --git a/dlls/d3dx8/tests/math.c b/dlls/d3dx8/tests/math.c index fbfe46d..8c35b55 100644 --- a/dlls/d3dx8/tests/math.c +++ b/dlls/d3dx8/tests/math.c @@ -195,6 +195,14 @@ static void D3DXMatrixTest(void) expectedmat.m[3][0] = -164.0f; expectedmat.m[3][1] = -320.0f; expectedmat.m[3][2] = 187.0f; expectedmat.m[3][3] = 31.0f; D3DXMatrixMultiply(&gotmat,&mat,&mat2); expect_mat(expectedmat,gotmat); + +/*____________D3DXMatrixTranspose______________*/ + expectedmat.m[0][0] = 10.0f; expectedmat.m[0][1] = 11.0f; expectedmat.m[0][2] = 19.0f; expectedmat.m[0][3] = 2.0f; + expectedmat.m[1][0] = 5.0; expectedmat.m[1][1] = 20.0f; expectedmat.m[1][2] = -21.0f; expectedmat.m[1][3] = 3.0f; + expectedmat.m[2][0] = 7.0f; expectedmat.m[2][1] = 16.0f; expectedmat.m[2][2] = 30.f; expectedmat.m[2][3] = -4.0f; + expectedmat.m[3][0] = 8.0f; expectedmat.m[3][1] = 33.0f; expectedmat.m[3][2] = 43.0f; expectedmat.m[3][3] = -40.0f; + D3DXMatrixTranspose(&gotmat,&mat); + expect_mat(expectedmat,gotmat); }
static void D3DXPlaneTest(void) diff --git a/include/d3dx8math.h b/include/d3dx8math.h index 94a9cfd..fda908e 100644 --- a/include/d3dx8math.h +++ b/include/d3dx8math.h @@ -60,6 +60,7 @@ typedef struct D3DXCOLOR
FLOAT WINAPI D3DXMatrixfDeterminant(CONST D3DXMATRIX *pm); D3DXMATRIX* WINAPI D3DXMatrixMultiply(D3DXMATRIX *pout, CONST D3DXMATRIX *pm1, CONST D3DXMATRIX *pm2); +D3DXMATRIX* WINAPI D3DXMatrixTranspose(D3DXMATRIX *pout, CONST D3DXMATRIX *pm);
D3DXQUATERNION* WINAPI D3DXQuaternionNormalize(D3DXQUATERNION *pout, CONST D3DXQUATERNION *pq);