David Adam : d3dx9_36: Implement D3DXComputeBoundingBox.

Alexandre Julliard julliard at winehq.org
Wed Feb 11 09:25:03 CST 2009


Module: wine
Branch: master
Commit: 00d14355db19699991b1be9ecc84a8b24b7bb46c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=00d14355db19699991b1be9ecc84a8b24b7bb46c

Author: David Adam <david.adam.cnrs at gmail.com>
Date:   Tue Feb 10 16:06:41 2009 +0100

d3dx9_36: Implement D3DXComputeBoundingBox.

---

 dlls/d3dx9_36/d3dx9_36.spec |    2 +-
 dlls/d3dx9_36/mesh.c        |   30 ++++++++++++++++++++++++++++++
 include/d3dx9.h             |    1 +
 include/d3dx9mesh.h         |    1 +
 4 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/dlls/d3dx9_36/d3dx9_36.spec b/dlls/d3dx9_36/d3dx9_36.spec
index 64ebd58..2534acf 100644
--- a/dlls/d3dx9_36/d3dx9_36.spec
+++ b/dlls/d3dx9_36/d3dx9_36.spec
@@ -16,7 +16,7 @@
 @ stub D3DXCompileShaderFromFileW
 @ stub D3DXCompileShaderFromResourceA
 @ stub D3DXCompileShaderFromResourceW
-@ stub D3DXComputeBoundingBox
+@ stdcall D3DXComputeBoundingBox(ptr long long ptr ptr)
 @ stub D3DXComputeBoundingSphere
 @ stub D3DXComputeIMTFromPerTexelSignal
 @ stub D3DXComputeIMTFromPerVertexSignal
diff --git a/dlls/d3dx9_36/mesh.c b/dlls/d3dx9_36/mesh.c
index c8637d8..08d6e2f 100644
--- a/dlls/d3dx9_36/mesh.c
+++ b/dlls/d3dx9_36/mesh.c
@@ -25,6 +25,36 @@
 
 
 /*************************************************************************
+ * D3DXComputeBoundingBox
+ */
+HRESULT WINAPI D3DXComputeBoundingBox(CONST D3DXVECTOR3 *pfirstposition, DWORD numvertices, DWORD dwstride, D3DXVECTOR3 *pmin, D3DXVECTOR3 *pmax)
+{
+    D3DXVECTOR3 vec;
+    unsigned int i;
+
+    if( !pfirstposition || !pmin || !pmax ) return D3DERR_INVALIDCALL;
+
+    *pmin = *pfirstposition;
+    *pmax = *pmin;
+
+    for(i=0; i<numvertices; i++)
+    {
+        vec = *( (D3DXVECTOR3*)((char*)pfirstposition + dwstride * i) );
+
+        if ( vec.x < pmin->x ) pmin->x = vec.x;
+        if ( vec.x > pmax->x ) pmax->x = vec.x;
+
+        if ( vec.y < pmin->y ) pmin->y = vec.y;
+        if ( vec.y > pmax->y ) pmax->y = vec.y;
+
+        if ( vec.z < pmin->z ) pmin->z = vec.z;
+        if ( vec.z > pmax->z ) pmax->z = vec.z;
+    }
+
+    return D3D_OK;
+}
+
+/*************************************************************************
  * D3DXIntersectTri
  */
 BOOL WINAPI D3DXIntersectTri(CONST D3DXVECTOR3 *p0, CONST D3DXVECTOR3 *p1, CONST D3DXVECTOR3 *p2, CONST D3DXVECTOR3 *praypos, CONST D3DXVECTOR3 *praydir, FLOAT *pu, FLOAT *pv, FLOAT *pdist)
diff --git a/include/d3dx9.h b/include/d3dx9.h
index b551eba..6b3bdf6 100644
--- a/include/d3dx9.h
+++ b/include/d3dx9.h
@@ -24,6 +24,7 @@
 #include "d3d9.h"
 #include "d3dx9math.h"
 #include "d3dx9core.h"
+#include "d3dx9mesh.h"
 #include "d3dx9shader.h"
 #include "d3dx9tex.h"
 
diff --git a/include/d3dx9mesh.h b/include/d3dx9mesh.h
index c337ad2..5cfc25e 100644
--- a/include/d3dx9mesh.h
+++ b/include/d3dx9mesh.h
@@ -29,6 +29,7 @@ HRESULT WINAPI D3DXCreateBuffer(DWORD, LPD3DXBUFFER*);
 UINT    WINAPI D3DXGetFVFVertexSize(DWORD);
 BOOL    WINAPI D3DXBoxBoundProbe(CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *);
 BOOL    WINAPI D3DXSphereBoundProbe(CONST D3DXVECTOR3 *,FLOAT,CONST D3DXVECTOR3 *,CONST D3DXVECTOR3 *);
+HRESULT WINAPI D3DXComputeBoundingBox(CONST D3DXVECTOR3 *, DWORD, DWORD, D3DXVECTOR3 *, D3DXVECTOR3 *);
 BOOL    WINAPI D3DXIntersectTri(CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3 *, CONST D3DXVECTOR3*, FLOAT *, FLOAT *, FLOAT *);
 
 #ifdef __cplusplus




More information about the wine-cvs mailing list