9b639cf2d6 2015-05-05 kinaba: /***********************************************************************\ 9b639cf2d6 2015-05-05 kinaba: * d3dx10math.d * 9b639cf2d6 2015-05-05 kinaba: * * 9b639cf2d6 2015-05-05 kinaba: * Windows API header module * 9b639cf2d6 2015-05-05 kinaba: * * 9b639cf2d6 2015-05-05 kinaba: * Placed into public domain * 9b639cf2d6 2015-05-05 kinaba: \***********************************************************************/ 9b639cf2d6 2015-05-05 kinaba: module win32.directx.d3dx10math; 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: version(Tango) { 9b639cf2d6 2015-05-05 kinaba: import tango.math.Math; 9b639cf2d6 2015-05-05 kinaba: alias sqrt sqrtf; 9b639cf2d6 2015-05-05 kinaba: } else { 9b639cf2d6 2015-05-05 kinaba: version (D_Version2) 9b639cf2d6 2015-05-05 kinaba: import core.stdc.math; 9b639cf2d6 2015-05-05 kinaba: else 9b639cf2d6 2015-05-05 kinaba: import std.c.math; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: private import win32.windows; 9b639cf2d6 2015-05-05 kinaba: private import win32.directx.d3dx10; 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct D3DVECTOR { 9b639cf2d6 2015-05-05 kinaba: float x; 9b639cf2d6 2015-05-05 kinaba: float y; 9b639cf2d6 2015-05-05 kinaba: float z; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct D3DMATRIX { 9b639cf2d6 2015-05-05 kinaba: union { 9b639cf2d6 2015-05-05 kinaba: struct { 9b639cf2d6 2015-05-05 kinaba: float _11, _12, _13, _14; 9b639cf2d6 2015-05-05 kinaba: float _21, _22, _23, _24; 9b639cf2d6 2015-05-05 kinaba: float _31, _32, _33, _34; 9b639cf2d6 2015-05-05 kinaba: float _41, _42, _43, _44; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: float[4][4] m; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: const D3DX_PI = 3.14159265358979323846; 9b639cf2d6 2015-05-05 kinaba: const D3DX_1BYPI = 1.0 / D3DX_PI; 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXToRadian(float degree) { 9b639cf2d6 2015-05-05 kinaba: return degree * (D3DX_PI / 180.0); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXToDegree(float radian) { 9b639cf2d6 2015-05-05 kinaba: return radian * (180.0 / D3DX_PI); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_DIG = 3; 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_EPSILON = 4.8875809e-4f; 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_MANT_DIG = 11; 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_MAX = 6.550400e+004; 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_MAX_10_EXP = 4; 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_MAX_EXP = 15; 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_MIN = 6.1035156e-5f; 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_MIN_10_EXP = -4; 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_MIN_EXP = -14; 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_RADIX = 2; 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_ROUNDS = 1; 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_SIGN_MASK = 0x8000; 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_EXP_MASK = 0x7C00; 9b639cf2d6 2015-05-05 kinaba: const D3DX_16F_FRAC_MASK = 0x03FF; 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct D3DXFLOAT16 { 9b639cf2d6 2015-05-05 kinaba: //TODO 9b639cf2d6 2015-05-05 kinaba: protected: 9b639cf2d6 2015-05-05 kinaba: WORD value; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct D3DXVECTOR2 { 9b639cf2d6 2015-05-05 kinaba: //TODO 9b639cf2d6 2015-05-05 kinaba: float x, y; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct D3DXVECTOR2_16F { 9b639cf2d6 2015-05-05 kinaba: //TODO 9b639cf2d6 2015-05-05 kinaba: D3DXFLOAT16 x, y; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct D3DXVECTOR3 { 9b639cf2d6 2015-05-05 kinaba: //TODO 9b639cf2d6 2015-05-05 kinaba: float x, y, z; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct D3DXVECTOR3_16F { 9b639cf2d6 2015-05-05 kinaba: //TODO 9b639cf2d6 2015-05-05 kinaba: D3DXFLOAT16 x, y, z; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct D3DXVECTOR4 { 9b639cf2d6 2015-05-05 kinaba: //TODO 9b639cf2d6 2015-05-05 kinaba: float x, y, z, w; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct D3DXVECTOR4_16F { 9b639cf2d6 2015-05-05 kinaba: //TODO 9b639cf2d6 2015-05-05 kinaba: D3DXFLOAT16 x, y, z, w; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct D3DXMATRIX { 9b639cf2d6 2015-05-05 kinaba: //TODO 9b639cf2d6 2015-05-05 kinaba: union { 9b639cf2d6 2015-05-05 kinaba: struct { 9b639cf2d6 2015-05-05 kinaba: float _11, _12, _13, _14; 9b639cf2d6 2015-05-05 kinaba: float _21, _22, _23, _24; 9b639cf2d6 2015-05-05 kinaba: float _31, _32, _33, _34; 9b639cf2d6 2015-05-05 kinaba: float _41, _42, _43, _44; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: float[4][4] m; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: //TODO struct _D3DXMATRIXA16 : D3DXMATRIX 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct D3DXQUATERNION { 9b639cf2d6 2015-05-05 kinaba: //TODO 9b639cf2d6 2015-05-05 kinaba: float x, y, z, w; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct D3DXPLANE { 9b639cf2d6 2015-05-05 kinaba: //TODO 9b639cf2d6 2015-05-05 kinaba: float a, b, c, d; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: struct D3DXCOLOR { 9b639cf2d6 2015-05-05 kinaba: //TODO 9b639cf2d6 2015-05-05 kinaba: float r, g, b, a; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: extern(Windows) { 9b639cf2d6 2015-05-05 kinaba: D3DXFLOAT16* D3DXFloat32To16Array(D3DXFLOAT16* pOut, float* pIn, UINT n); 9b639cf2d6 2015-05-05 kinaba: float* D3DXFloat16To32Array(float* pOut, D3DXFLOAT16* pIn, UINT n); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXVec2Length(D3DXVECTOR2* pV) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if (pV is null) return 0.0; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return sqrtf((pV.x * pV.x) + (pV.y * pV.y)); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXVec2LengthSq(D3DXVECTOR2* pV) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if (pV is null) return 0.0; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pV.x * pV.x) + (pV.y * pV.y); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXVec2Dot(D3DXVECTOR2* pV1, D3DXVECTOR2* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pV1 is null) || (pV2 is null)) return 0.0; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pV1.x * pV2.x) + (pV1.y * pV2.y); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXVec2CCW(D3DXVECTOR2* pV1, D3DXVECTOR2* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pV1 is null) || (pV2 is null)) return 0.0; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pV1.x * pV2.y) + (pV1.y * pV2.x); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2Add(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x + pV2.x; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y + pV2.y; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2Subtract(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x - pV2.x; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y - pV2.y; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2Minimize(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x < pV2.x ? pV1.x : pV2.x; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y < pV2.y ? pV1.y : pV2.y; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2Maximize(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x > pV2.x ? pV1.x : pV2.x; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y > pV2.y ? pV1.y : pV2.y; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2Scale(D3DXVECTOR2* pOut, D3DXVECTOR2* pV, float s) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV.x * s; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV.y * s; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2Lerp(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2, float s) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x + s * (pV2.x - pV1.x); 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y + s * (pV2.y - pV1.y); 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: extern(Windows) { 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2Normalize(D3DXVECTOR2* pOut, D3DXVECTOR2* pV); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2Hermite(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pT1, D3DXVECTOR2* pV2, D3DXVECTOR2* pT2, float s); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2CatmullRom(D3DXVECTOR2* pOut, D3DXVECTOR2* pV0, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2, D3DXVECTOR2* pV3, float s); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2BaryCentric(D3DXVECTOR2* pOut, D3DXVECTOR2* pV1, D3DXVECTOR2* pV2, D3DXVECTOR2* pV3, float f, float g); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec2Transform(D3DXVECTOR4* pOut, D3DXVECTOR2* pV, D3DXMATRIX* pM); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2TransformCoord(D3DXVECTOR2* pOut, D3DXVECTOR2* pV, D3DXMATRIX* pM); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2TransformNormal(D3DXVECTOR2* pOut, D3DXVECTOR2* pV, D3DXMATRIX* pM); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec2TransformArray(D3DXVECTOR4* pOut, UINT OutStride, D3DXVECTOR2* pV, UINT VStride, D3DXMATRIX* pM, UINT n); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2TransformCoordArray(D3DXVECTOR2* pOut, UINT OutStride, D3DXVECTOR2* pV, UINT VStride, D3DXMATRIX* pM, UINT n); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR2* D3DXVec2TransformNormalArray(D3DXVECTOR2* pOut, UINT OutStride, D3DXVECTOR2* pV, UINT VStride, D3DXMATRIX* pM, UINT n); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXVec3Length(D3DXVECTOR3* pV) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if (pV is null) return 0.0; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return sqrtf((pV.x * pV.x) + (pV.y * pV.y) + (pV.z * pV.z)); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXVec3LengthSq(D3DXVECTOR3* pV) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if (pV is null) return 0.0; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pV.x * pV.x) + (pV.y * pV.y) + (pV.z * pV.z); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXVec3Dot(D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pV1 is null) || (pV2 is null)) return 0.0; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pV1.x * pV2.x) + (pV1.y * pV2.y) + (pV1.z * pV2.z); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3Cross(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return 0.0; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3 v; 9b639cf2d6 2015-05-05 kinaba: v.x = (pV1.y * pV2.z) - (pV1.z * pV2.y); 9b639cf2d6 2015-05-05 kinaba: v.y = (pV1.z * pV2.x) - (pV1.x * pV2.z); 9b639cf2d6 2015-05-05 kinaba: v.z = (pV1.x * pV2.y) - (pV1.y * pV2.x); 9b639cf2d6 2015-05-05 kinaba: *pOut = v; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3Add(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x + pV2.x; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y + pV2.y; 9b639cf2d6 2015-05-05 kinaba: pOut.z = pV1.z + pV2.z; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3Subtract(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x - pV2.x; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y - pV2.y; 9b639cf2d6 2015-05-05 kinaba: pOut.z = pV1.z - pV2.z; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3Minimize(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x < pV2.x ? pV1.x : pV2.x; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y < pV2.y ? pV1.y : pV2.y; 9b639cf2d6 2015-05-05 kinaba: pOut.z = pV1.z < pV2.z ? pV1.z : pV2.z; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3Maximize(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x > pV2.x ? pV1.x : pV2.x; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y > pV2.y ? pV1.y : pV2.y; 9b639cf2d6 2015-05-05 kinaba: pOut.z = pV1.z > pV2.z ? pV1.z : pV2.z; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3Scale(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, float s) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV.x * s; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV.y * s; 9b639cf2d6 2015-05-05 kinaba: pOut.z = pV.z * s; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3Lerp(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2, float s) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x + s * (pV2.x - pV1.x); 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y + s * (pV2.y - pV1.y); 9b639cf2d6 2015-05-05 kinaba: pOut.z = pV1.z + s * (pV2.z - pV1.z); 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: extern(Windows) { 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3Normalize(D3DXVECTOR3* pOut, D3DXVECTOR3* pV); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3Hermite(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pT1, D3DXVECTOR3* pV2, D3DXVECTOR3* pT2, FLOAT s); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3CatmullRom(D3DXVECTOR3* pOut, D3DXVECTOR3* pV0, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2, D3DXVECTOR3* pV3, FLOAT s); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3BaryCentric(D3DXVECTOR3* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2, D3DXVECTOR3* pV3, FLOAT f, FLOAT g); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec3Transform(D3DXVECTOR4* pOut, D3DXVECTOR3* pV, D3DXMATRIX* pM); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3TransformCoord(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, D3DXMATRIX* pM); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3TransformNormal(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, D3DXMATRIX* pM); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec3TransformArray(D3DXVECTOR4* pOut, UINT OutStride, D3DXVECTOR3* pV, UINT VStride, D3DXMATRIX* pM, UINT n); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3TransformCoordArray(D3DXVECTOR3* pOut, UINT OutStride, D3DXVECTOR3* pV, UINT VStride, D3DXMATRIX* pM, UINT n); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3TransformNormalArray(D3DXVECTOR3* pOut, UINT OutStride, D3DXVECTOR3* pV, UINT VStride, D3DXMATRIX* pM, UINT n); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3Project(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, D3D10_VIEWPORT* pViewport, D3DXMATRIX* pProjection, D3DXMATRIX* pView, D3DXMATRIX* pWorld); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3Unproject(D3DXVECTOR3* pOut, D3DXVECTOR3* pV, D3D10_VIEWPORT* pViewport, D3DXMATRIX* pProjection, D3DXMATRIX* pView, D3DXMATRIX* pWorld); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3ProjectArray(D3DXVECTOR3* pOut, UINT OutStride,D3DXVECTOR3* pV, UINT VStride,D3D10_VIEWPORT* pViewport, D3DXMATRIX* pProjection, D3DXMATRIX* pView, D3DXMATRIX* pWorld, UINT n); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXVec3UnprojectArray(D3DXVECTOR3* pOut, UINT OutStride, D3DXVECTOR3* pV, UINT VStride, D3D10_VIEWPORT* pViewport, D3DXMATRIX* pProjection, D3DXMATRIX* pView, D3DXMATRIX* pWorld, UINT n); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXVec4Length(D3DXVECTOR4* pV) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if (pV is null) return 0.0; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return sqrtf((pV.x * pV.x) + (pV.y * pV.y) + (pV.z * pV.z) + (pV.w * pV.w)); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXVec4LengthSq(D3DXVECTOR4* pV) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if (pV is null) return 0.0; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pV.x * pV.x) + (pV.y * pV.y) + (pV.z * pV.z) + (pV.w * pV.w); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXVec4Dot(D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pV1 is null) || (pV2 is null)) return 0.0; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pV1.x * pV2.x) + (pV1.y * pV2.y) + (pV1.z * pV2.z) + (pV1.w * pV2.w); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec4Add(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x + pV2.x; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y + pV2.y; 9b639cf2d6 2015-05-05 kinaba: pOut.z = pV1.z + pV2.z; 9b639cf2d6 2015-05-05 kinaba: pOut.w = pV1.w + pV2.w; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec4Subtract(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x - pV2.x; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y - pV2.y; 9b639cf2d6 2015-05-05 kinaba: pOut.z = pV1.z - pV2.z; 9b639cf2d6 2015-05-05 kinaba: pOut.w = pV1.w - pV2.w; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec4Minimize(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x < pV2.x ? pV1.x : pV2.x; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y < pV2.y ? pV1.y : pV2.y; 9b639cf2d6 2015-05-05 kinaba: pOut.z = pV1.z < pV2.z ? pV1.z : pV2.z; 9b639cf2d6 2015-05-05 kinaba: pOut.w = pV1.w < pV2.w ? pV1.w : pV2.w; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec4Maximize(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x > pV2.x ? pV1.x : pV2.x; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y > pV2.y ? pV1.y : pV2.y; 9b639cf2d6 2015-05-05 kinaba: pOut.z = pV1.z > pV2.z ? pV1.z : pV2.z; 9b639cf2d6 2015-05-05 kinaba: pOut.w = pV1.w > pV2.w ? pV1.w : pV2.w; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec4Scale(D3DXVECTOR4* pOut, D3DXVECTOR4* pV, float s) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV.x * s; 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV.y * s; 9b639cf2d6 2015-05-05 kinaba: pOut.z = pV.z * s; 9b639cf2d6 2015-05-05 kinaba: pOut.w = pV.w * s; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec4Lerp(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2, float s) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if ((pOut is null) || (pV1 is null) || (pV2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pV1.x + s * (pV2.x - pV1.x); 9b639cf2d6 2015-05-05 kinaba: pOut.y = pV1.y + s * (pV2.y - pV1.y); 9b639cf2d6 2015-05-05 kinaba: pOut.z = pV1.z + s * (pV2.z - pV1.z); 9b639cf2d6 2015-05-05 kinaba: pOut.w = pV1.w + s * (pV2.w - pV1.w); 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: extern(Windows) { 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec4Cross(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2, D3DXVECTOR4* pV3); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec4Normalize(D3DXVECTOR4* pOut, D3DXVECTOR4* pV); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec4Hermite(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pT1, D3DXVECTOR4* pV2, D3DXVECTOR4* pT2, FLOAT s); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec4CatmullRom(D3DXVECTOR4* pOut, D3DXVECTOR4* pV0, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2, D3DXVECTOR4* pV3, FLOAT s); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec4BaryCentric(D3DXVECTOR4* pOut, D3DXVECTOR4* pV1, D3DXVECTOR4* pV2, D3DXVECTOR4* pV3, FLOAT f, FLOAT g); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec4Transform(D3DXVECTOR4* pOut, D3DXVECTOR4* pV, D3DXMATRIX* pM); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR4* D3DXVec4TransformArray(D3DXVECTOR4* pOut, UINT OutStride, D3DXVECTOR4* pV, UINT VStride, D3DXMATRIX* pM, UINT n); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixIdentity(D3DXMATRIX *pOut) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if (pOut is null) return NULL; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.m[0][1] = pOut.m[0][2] = pOut.m[0][3] = 9b639cf2d6 2015-05-05 kinaba: pOut.m[1][0] = pOut.m[1][2] = pOut.m[1][3] = 9b639cf2d6 2015-05-05 kinaba: pOut.m[2][0] = pOut.m[2][1] = pOut.m[2][3] = 9b639cf2d6 2015-05-05 kinaba: pOut.m[3][0] = pOut.m[3][1] = pOut.m[3][2] = 0.0; 9b639cf2d6 2015-05-05 kinaba: pOut.m[0][0] = pOut.m[1][1] = pOut.m[2][2] = pOut.m[3][3] = 1.0; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: BOOL D3DXMatrixIsIdentity(D3DXMATRIX *pM) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if(pM is null) return FALSE; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pM.m[0][0] == 1.0f) && (pM.m[0][1] == 0.0f) && (pM.m[0][2] == 0.0f) && (pM.m[0][3] == 0.0f) && 9b639cf2d6 2015-05-05 kinaba: (pM.m[1][0] == 0.0f) && (pM.m[1][1] == 1.0f) && (pM.m[1][2] == 0.0f) && (pM.m[1][3] == 0.0f) && 9b639cf2d6 2015-05-05 kinaba: (pM.m[2][0] == 0.0f) && (pM.m[2][1] == 0.0f) && (pM.m[2][2] == 1.0f) && (pM.m[2][3] == 0.0f) && 9b639cf2d6 2015-05-05 kinaba: (pM.m[3][0] == 0.0f) && (pM.m[3][1] == 0.0f) && (pM.m[3][2] == 0.0f) && (pM.m[3][3] == 1.0f); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: extern(Windows) { 9b639cf2d6 2015-05-05 kinaba: FLOAT D3DXMatrixDeterminant(D3DXMATRIX* pM); 9b639cf2d6 2015-05-05 kinaba: HRESULT D3DXMatrixDecompose(D3DXVECTOR3* pOutScale, D3DXQUATERNION* pOutRotation, D3DXVECTOR3* pOutTranslation, D3DXMATRIX* pM); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixTranspose(D3DXMATRIX* pOut, D3DXMATRIX* pM); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixMultiply(D3DXMATRIX* pOut, D3DXMATRIX* pM1, D3DXMATRIX* pM2); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixMultiplyTranspose(D3DXMATRIX* pOut, D3DXMATRIX* pM1, D3DXMATRIX* pM2); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixInverse(D3DXMATRIX* pOut, FLOAT* pDeterminant, D3DXMATRIX* pM); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixScaling(D3DXMATRIX* pOut, FLOAT sx, FLOAT sy, FLOAT sz); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixTranslation(D3DXMATRIX* pOut, FLOAT x, FLOAT y, FLOAT z); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixRotationX(D3DXMATRIX* pOut, FLOAT Angle); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixRotationY(D3DXMATRIX* pOut, FLOAT Angle); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixRotationZ(D3DXMATRIX* pOut, FLOAT Angle); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixRotationAxis(D3DXMATRIX* pOut, D3DXVECTOR3* pV, FLOAT Angle); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixRotationQuaternion(D3DXMATRIX* pOut, D3DXQUATERNION* pQ); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixRotationYawPitchRoll(D3DXMATRIX* pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixTransformation(D3DXMATRIX* pOut, D3DXVECTOR3* pScalingCenter, D3DXQUATERNION* pScalingRotation, D3DXVECTOR3* pScaling, D3DXVECTOR3* pRotationCenter, D3DXQUATERNION* pRotation, D3DXVECTOR3* pTranslation); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixTransformation2D(D3DXMATRIX* pOut, D3DXVECTOR2* pScalingCenter, FLOAT ScalingRotation, D3DXVECTOR2* pScaling, D3DXVECTOR2* pRotationCenter, FLOAT Rotation, D3DXVECTOR2* pTranslation); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixAffineTransformation(D3DXMATRIX* pOut, FLOAT Scaling, D3DXVECTOR3* pRotationCenter, D3DXQUATERNION* pRotation, D3DXVECTOR3* pTranslation); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixAffineTransformation2D(D3DXMATRIX* pOut, FLOAT Scaling, D3DXVECTOR2* pRotationCenter, FLOAT Rotation, D3DXVECTOR2* pTranslation); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixLookAtRH(D3DXMATRIX* pOut, D3DXVECTOR3* pEye, D3DXVECTOR3* pAt, D3DXVECTOR3* pUp); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixLookAtLH(D3DXMATRIX* pOut, D3DXVECTOR3* pEye, D3DXVECTOR3* pAt, D3DXVECTOR3* pUp); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixPerspectiveRH(D3DXMATRIX* pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixPerspectiveLH(D3DXMATRIX* pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixPerspectiveFovRH(D3DXMATRIX* pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixPerspectiveFovLH(D3DXMATRIX* pOut, FLOAT fovy, FLOAT Aspect, FLOAT zn, FLOAT zf); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixPerspectiveOffCenterRH(D3DXMATRIX* pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixPerspectiveOffCenterLH(D3DXMATRIX* pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixOrthoRH(D3DXMATRIX* pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixOrthoLH(D3DXMATRIX* pOut, FLOAT w, FLOAT h, FLOAT zn, FLOAT zf); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixOrthoOffCenterRH(D3DXMATRIX* pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixOrthoOffCenterLH(D3DXMATRIX* pOut, FLOAT l, FLOAT r, FLOAT b, FLOAT t, FLOAT zn, FLOAT zf); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixShadow(D3DXMATRIX* pOut, D3DXVECTOR4* pLight, D3DXPLANE* pPlane); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* D3DXMatrixReflect(D3DXMATRIX* pOut, D3DXPLANE* pPlane); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXQuaternionLength(D3DXQUATERNION *pQ) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if (pQ is null) return 0.0f; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return sqrtf((pQ.x * pQ.x) + (pQ.y * pQ.y) + (pQ.z * pQ.z) + (pQ.w * pQ.w)); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXQuaternionLengthSq(D3DXQUATERNION *pQ) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if(pQ is null) return 0.0f; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pQ.x * pQ.x) + (pQ.y * pQ.y) + (pQ.z * pQ.z) + (pQ.w * pQ.w); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXQuaternionDot(D3DXQUATERNION *pQ1, D3DXQUATERNION *pQ2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if((pQ1 is null) || (pQ2 is null)) return 0.0f; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pQ1.x * pQ2.x) + (pQ1.y * pQ2.y) + (pQ1.z * pQ2.z) + (pQ1.w * pQ2.w); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXQUATERNION* D3DXQuaternionIdentity(D3DXQUATERNION *pOut) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if(pOut is null) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = pOut.y = pOut.z = 0.0f; 9b639cf2d6 2015-05-05 kinaba: pOut.w = 1.0f; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: bool D3DXQuaternionIsIdentity(D3DXQUATERNION *pQ) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if(pQ is null) return false; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pQ.x == 0.0f) && (pQ.y == 0.0f) && (pQ.z == 0.0f) && (pQ.w == 1.0f); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXQUATERNION* D3DXQuaternionConjugate(D3DXQUATERNION *pOut, D3DXQUATERNION *pQ) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if((pOut is null) || (pQis is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.x = -pQ.x; 9b639cf2d6 2015-05-05 kinaba: pOut.y = -pQ.y; 9b639cf2d6 2015-05-05 kinaba: pOut.z = -pQ.z; 9b639cf2d6 2015-05-05 kinaba: pOut.w = pQ.w; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: extern(Windows) { 9b639cf2d6 2015-05-05 kinaba: void D3DXQuaternionToAxisAngle(D3DXQUATERNION* pQ, D3DXVECTOR3* pAxis, FLOAT* pAngle); 9b639cf2d6 2015-05-05 kinaba: D3DXQUATERNION* D3DXQuaternionRotationMatrix(D3DXQUATERNION* pOut, D3DXMATRIX* pM); 9b639cf2d6 2015-05-05 kinaba: D3DXQUATERNION* D3DXQuaternionRotationAxis(D3DXQUATERNION* pOut, D3DXVECTOR3* pV, FLOAT Angle); 9b639cf2d6 2015-05-05 kinaba: D3DXQUATERNION* D3DXQuaternionRotationYawPitchRoll(D3DXQUATERNION* pOut, FLOAT Yaw, FLOAT Pitch, FLOAT Roll); 9b639cf2d6 2015-05-05 kinaba: D3DXQUATERNION* D3DXQuaternionMultiply(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2); 9b639cf2d6 2015-05-05 kinaba: D3DXQUATERNION* D3DXQuaternionNormalize(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ); 9b639cf2d6 2015-05-05 kinaba: D3DXQUATERNION* D3DXQuaternionInverse(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ); 9b639cf2d6 2015-05-05 kinaba: D3DXQUATERNION* D3DXQuaternionLn(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ); 9b639cf2d6 2015-05-05 kinaba: D3DXQUATERNION* D3DXQuaternionExp(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ); 9b639cf2d6 2015-05-05 kinaba: D3DXQUATERNION* D3DXQuaternionSlerp(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2, FLOAT t); 9b639cf2d6 2015-05-05 kinaba: D3DXQUATERNION* D3DXQuaternionSquad(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pA, D3DXQUATERNION* pB, D3DXQUATERNION* pC, FLOAT t); 9b639cf2d6 2015-05-05 kinaba: void D3DXQuaternionSquadSetup(D3DXQUATERNION* pAOut, D3DXQUATERNION* pBOut, D3DXQUATERNION* pCOut, D3DXQUATERNION* pQ0, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2, D3DXQUATERNION* pQ3); 9b639cf2d6 2015-05-05 kinaba: D3DXQUATERNION* D3DXQuaternionBaryCentric(D3DXQUATERNION* pOut, D3DXQUATERNION* pQ1, D3DXQUATERNION* pQ2, D3DXQUATERNION* pQ3, FLOAT f, FLOAT g); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXPlaneDot(D3DXPLANE *pP, D3DXVECTOR4 *pV) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if((pP is null) || (pV is null)) return 0.0f; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pP.a * pV.x) + (pP.b * pV.y) + (pP.c * pV.z) + (pP.d * pV.w); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXPlaneDotCoord(D3DXPLANE *pP, D3DXVECTOR3 *pV) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if((pP is null) || (pV is null)) return 0.0f; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pP.a * pV.x) + (pP.b * pV.y) + (pP.c * pV.z) + pP.d; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: float D3DXPlaneDotNormal(D3DXPLANE *pP, D3DXVECTOR3 *pV) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if((pP is null) || (pV is null)) return 0.0f; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: return (pP.a * pV.x) + (pP.b * pV.y) + (pP.c * pV.z); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXPLANE* D3DXPlaneScale(D3DXPLANE *pOut, D3DXPLANE *pP, float s) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if((pOut is null) || (pP is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.a = pP.a * s; 9b639cf2d6 2015-05-05 kinaba: pOut.b = pP.b * s; 9b639cf2d6 2015-05-05 kinaba: pOut.c = pP.c * s; 9b639cf2d6 2015-05-05 kinaba: pOut.d = pP.d * s; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: extern(Windows) { 9b639cf2d6 2015-05-05 kinaba: D3DXPLANE* D3DXPlaneNormalize(D3DXPLANE* pOut, D3DXPLANE* pP); 9b639cf2d6 2015-05-05 kinaba: D3DXVECTOR3* D3DXPlaneIntersectLine(D3DXVECTOR3* pOut, D3DXPLANE* pP, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2); 9b639cf2d6 2015-05-05 kinaba: D3DXPLANE* D3DXPlaneFromPointNormal(D3DXPLANE* pOut, D3DXVECTOR3* pPoint, D3DXVECTOR3* pNormal); 9b639cf2d6 2015-05-05 kinaba: D3DXPLANE* D3DXPlaneFromPoints(D3DXPLANE* pOut, D3DXVECTOR3* pV1, D3DXVECTOR3* pV2, D3DXVECTOR3* pV3); 9b639cf2d6 2015-05-05 kinaba: D3DXPLANE* D3DXPlaneTransform(D3DXPLANE* pOut, D3DXPLANE* pP, D3DXMATRIX* pM); 9b639cf2d6 2015-05-05 kinaba: D3DXPLANE* D3DXPlaneTransformArray(D3DXPLANE* pOut, UINT OutStride, D3DXPLANE* pP, UINT PStride, D3DXMATRIX* pM, UINT n); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXCOLOR* D3DXColorNegative(D3DXCOLOR* pOut, D3DXCOLOR* pC) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if((pOut is null) || (pC is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.r = 1.0f - pC.r; 9b639cf2d6 2015-05-05 kinaba: pOut.g = 1.0f - pC.g; 9b639cf2d6 2015-05-05 kinaba: pOut.b = 1.0f - pC.b; 9b639cf2d6 2015-05-05 kinaba: pOut.a = pC.a; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXCOLOR* D3DXColorAdd(D3DXCOLOR* pOut, D3DXCOLOR* pC1, D3DXCOLOR* pC2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if((pOut is null) || (pC1 is null) || (pC2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.r = pC1.r + pC2.r; 9b639cf2d6 2015-05-05 kinaba: pOut.g = pC1.g + pC2.g; 9b639cf2d6 2015-05-05 kinaba: pOut.b = pC1.b + pC2.b; 9b639cf2d6 2015-05-05 kinaba: pOut.a = pC1.a + pC2.a; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXCOLOR* D3DXColorSubtract(D3DXCOLOR* pOut, D3DXCOLOR* pC1, D3DXCOLOR* pC2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if((pOut is null) || (pC1 is null) || (pC2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.r = pC1.r - pC2.r; 9b639cf2d6 2015-05-05 kinaba: pOut.g = pC1.g - pC2.g; 9b639cf2d6 2015-05-05 kinaba: pOut.b = pC1.b - pC2.b; 9b639cf2d6 2015-05-05 kinaba: pOut.a = pC1.a - pC2.a; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXCOLOR* D3DXColorScale(D3DXCOLOR* pOut, D3DXCOLOR* pC, float s) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if((pOut is null) || (pC is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.r = pC.r * s; 9b639cf2d6 2015-05-05 kinaba: pOut.g = pC.g * s; 9b639cf2d6 2015-05-05 kinaba: pOut.b = pC.b * s; 9b639cf2d6 2015-05-05 kinaba: pOut.a = pC.a * s; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXCOLOR* D3DXColorModulate(D3DXCOLOR* pOut, D3DXCOLOR* pC1, D3DXCOLOR* pC2) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if((pOut is null) || (pC1 is null) || (pC2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.r = pC1.r * pC2.r; 9b639cf2d6 2015-05-05 kinaba: pOut.g = pC1.g * pC2.g; 9b639cf2d6 2015-05-05 kinaba: pOut.b = pC1.b * pC2.b; 9b639cf2d6 2015-05-05 kinaba: pOut.a = pC1.a * pC2.a; 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: D3DXCOLOR* D3DXColorLerp(D3DXCOLOR* pOut, D3DXCOLOR* pC1, D3DXCOLOR* pC2, float s) { 9b639cf2d6 2015-05-05 kinaba: debug(D3DX10_DEBUG) { 9b639cf2d6 2015-05-05 kinaba: if((pOut is null) || (pC1 is null) || (pC2 is null)) return null; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: pOut.r = pC1.r + s * (pC2.r - pC1.r); 9b639cf2d6 2015-05-05 kinaba: pOut.g = pC1.g + s * (pC2.g - pC1.g); 9b639cf2d6 2015-05-05 kinaba: pOut.b = pC1.b + s * (pC2.b - pC1.b); 9b639cf2d6 2015-05-05 kinaba: pOut.a = pC1.a + s * (pC2.a - pC1.a); 9b639cf2d6 2015-05-05 kinaba: return pOut; 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: extern(Windows) { 9b639cf2d6 2015-05-05 kinaba: D3DXCOLOR* D3DXColorAdjustSaturation(D3DXCOLOR* pOut, D3DXCOLOR* pC, float s); 9b639cf2d6 2015-05-05 kinaba: D3DXCOLOR* D3DXColorAdjustContrast(D3DXCOLOR* pOut, D3DXCOLOR* pC, float c); 9b639cf2d6 2015-05-05 kinaba: FLOAT D3DXFresnelTerm(float CosTheta, float RefractionIndex); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: extern (C) const GUID IID_ID3DXMatrixStack = {0xc7885ba7, 0xf990, 0x4fe7, [0x92, 0x2d, 0x85, 0x15, 0xe4, 0x77, 0xdd, 0x85]}; 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: interface ID3DXMatrixStack : IUnknown { 9b639cf2d6 2015-05-05 kinaba: extern(Windows) : 9b639cf2d6 2015-05-05 kinaba: HRESULT Pop(); 9b639cf2d6 2015-05-05 kinaba: HRESULT Push(); 9b639cf2d6 2015-05-05 kinaba: HRESULT LoadIdentity(); 9b639cf2d6 2015-05-05 kinaba: HRESULT LoadMatrix(D3DXMATRIX* pM ); 9b639cf2d6 2015-05-05 kinaba: HRESULT MultMatrix(D3DXMATRIX* pM ); 9b639cf2d6 2015-05-05 kinaba: HRESULT MultMatrixLocal(D3DXMATRIX* pM ); 9b639cf2d6 2015-05-05 kinaba: HRESULT RotateAxis(D3DXVECTOR3* pV, float Angle); 9b639cf2d6 2015-05-05 kinaba: HRESULT RotateAxisLocal(D3DXVECTOR3* pV, float Angle); 9b639cf2d6 2015-05-05 kinaba: HRESULT RotateYawPitchRoll(float Yaw, float Pitch, float Roll); 9b639cf2d6 2015-05-05 kinaba: HRESULT RotateYawPitchRollLocal(float Yaw, float Pitch, float Roll); 9b639cf2d6 2015-05-05 kinaba: HRESULT Scale(float x, float y, float z); 9b639cf2d6 2015-05-05 kinaba: HRESULT ScaleLocal(float x, float y, float z); 9b639cf2d6 2015-05-05 kinaba: HRESULT Translate(float x, float y, float z ); 9b639cf2d6 2015-05-05 kinaba: HRESULT TranslateLocal(float x, float y, float z); 9b639cf2d6 2015-05-05 kinaba: D3DXMATRIX* GetTop(); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: //TODO extern(Windows) HRESULT D3DXCreateMatrixStack(UINT Flags, D3DXMATRIXSTACK* ppStack); 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: const D3DXSH_MINORDER = 2; 9b639cf2d6 2015-05-05 kinaba: const D3DXSH_MAXORDER = 6; 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: extern(Windows) { 9b639cf2d6 2015-05-05 kinaba: float* D3DXSHEvalDirection(float* pOut, UINT Order, D3DXVECTOR3* pDir); 9b639cf2d6 2015-05-05 kinaba: float* D3DXSHRotate(float* pOut, UINT Order, D3DXMATRIX* pMatrix, float* pIn); 9b639cf2d6 2015-05-05 kinaba: float* D3DXSHRotateZ(float* pOut, UINT Order, float Angle, float* pIn); 9b639cf2d6 2015-05-05 kinaba: float* D3DXSHAdd(float* pOut, UINT Order, float* pA, float* pB); 9b639cf2d6 2015-05-05 kinaba: float* D3DXSHScale(float* pOut, UINT Order, float* pIn, float Scale); 9b639cf2d6 2015-05-05 kinaba: float D3DXSHDot(UINT Order, float* pA, float* pB); 9b639cf2d6 2015-05-05 kinaba: float* D3DXSHMultiply2(float* pOut, float* pF, float* pG); 9b639cf2d6 2015-05-05 kinaba: float* D3DXSHMultiply3(float* pOut, float* pF, float* pG); 9b639cf2d6 2015-05-05 kinaba: float* D3DXSHMultiply4(float* pOut, float* pF, float* pG); 9b639cf2d6 2015-05-05 kinaba: float* D3DXSHMultiply5(float* pOut, float* pF, float* pG); 9b639cf2d6 2015-05-05 kinaba: float* D3DXSHMultiply6(float* pOut, float* pF, float* pG); 9b639cf2d6 2015-05-05 kinaba: HRESULT D3DXSHEvalDirectionalLight(UINT Order, D3DXVECTOR3* pDir, float RIntensity, float GIntensity, float BIntensity, float* pROut, float* pGOut, float* pBOut); 9b639cf2d6 2015-05-05 kinaba: HRESULT D3DXSHEvalSphericalLight(UINT Order, D3DXVECTOR3* pPos, float Radius, float RIntensity, float GIntensity, float BIntensity, float* pROut, float* pGOut, float* pBOut); 9b639cf2d6 2015-05-05 kinaba: HRESULT D3DXSHEvalConeLight(UINT Order, D3DXVECTOR3* pDir, float Radius, float RIntensity, float GIntensity, float BIntensity, float* pROut, float* pGOut, float* pBOut); 9b639cf2d6 2015-05-05 kinaba: HRESULT D3DXSHEvalHemisphereLight(UINT Order, D3DXVECTOR3* pDir, D3DXCOLOR Top, D3DXCOLOR Bottom, float* pROut, float* pGOut, float* pBOut); 9b639cf2d6 2015-05-05 kinaba: BOOL D3DXIntersectTri(D3DXVECTOR3* p0, D3DXVECTOR3* p1, D3DXVECTOR3* p2, D3DXVECTOR3* pRayPos, D3DXVECTOR3* pRayDir, float* pU, float* pV, float* pDist); 9b639cf2d6 2015-05-05 kinaba: BOOL D3DXSphereBoundProbe(D3DXVECTOR3* pCenter, float Radius, D3DXVECTOR3* pRayPosition, D3DXVECTOR3* pRayDirection); 9b639cf2d6 2015-05-05 kinaba: BOOL D3DXBoxBoundProbe(D3DXVECTOR3* pMin, D3DXVECTOR3* pMax, D3DXVECTOR3* pRayPosition, D3DXVECTOR3* pRayDirection); 9b639cf2d6 2015-05-05 kinaba: HRESULT D3DXComputeBoundingSphere(D3DXVECTOR3* pFirstPosition, DWORD NumVertices, DWORD dwStride, D3DXVECTOR3* pCenter, float* pRadius); 9b639cf2d6 2015-05-05 kinaba: HRESULT D3DXComputeBoundingBox(D3DXVECTOR3* pFirstPosition, DWORD NumVertices, DWORD dwStride, D3DXVECTOR3* pMin, D3DXVECTOR3* pMax); 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: enum D3DX_CPU_OPTIMIZATION { 9b639cf2d6 2015-05-05 kinaba: D3DX_NOT_OPTIMIZED = 0, 9b639cf2d6 2015-05-05 kinaba: D3DX_3DNOW_OPTIMIZED, 9b639cf2d6 2015-05-05 kinaba: D3DX_SSE2_OPTIMIZED, 9b639cf2d6 2015-05-05 kinaba: D3DX_SSE_OPTIMIZED 9b639cf2d6 2015-05-05 kinaba: } 9b639cf2d6 2015-05-05 kinaba: 9b639cf2d6 2015-05-05 kinaba: extern(Windows) D3DX_CPU_OPTIMIZATION D3DXCpuOptimizations(bool Enable);