|
|
|
DirectX Functions |
|
Direct3D |
|
'/* ' * DLL Function for creating a Direct3D9 object. This object supports ' * enumeration and allows the creation of Direct3DDevice9 objects. ' * Pass the value of the constant D3D_SDK_VERSION to this function, so ' * that the run-time can validate that your application was compiled ' * against the right headers. ' */ DECLARE FUNCTION Direct3DCreate9 LIB "d3d9.dll" ALIAS "Direct3DCreate9" (BYVAL SDKVersion AS DWORD) AS DWORD '/* ' * Stubs for graphics profiling. ' */ 'int WINAPI D3DPERF_BeginEvent( D3DCOLOR col, LPCWSTR wszName ); 'int WINAPI D3DPERF_EndEvent( void ); 'void WINAPI D3DPERF_SetMarker( D3DCOLOR col, LPCWSTR wszName ); 'void WINAPI D3DPERF_SetRegion( D3DCOLOR col, LPCWSTR wszName ); 'BOOL WINAPI D3DPERF_QueryRepeatFrame( void ); 'void WINAPI D3DPERF_SetOptions( DWORD dwOptions ); 'DWORD WINAPI D3DPERF_GetStatus( void ); DECLARE FUNCTION D3DPERF_BeginEvent LIB "d3d9.dll" ALIAS "D3DPERF_BeginEvent" (BYVAL prmColor AS DWORD, BYVAL wszName AS DWORD) AS LONG DECLARE FUNCTION D3DPERF_EndEvent LIB "d3d9.dll" ALIAS "D3DPERF_EndEvent" () AS LONG DECLARE SUB D3DPERF_SetMarker LIB "d3d9.dll" ALIAS "D3DPERF_SetMarker" (BYVAL prmColor AS DWORD, BYVAL wszName AS DWORD) DECLARE SUB D3DPERF_SetRegion LIB "d3d9.dll" ALIAS "D3DPERF_SetRegion" (BYVAL prmColor AS DWORD, BYVAL wszName AS DWORD) DECLARE FUNCTION D3DPERF_QueryRepeatFrame LIB "d3d9.dll" ALIAS "D3DPERF_QueryRepeatFrame" () AS LONG DECLARE SUB D3DPERF_SetOptions LIB "d3d9.dll" ALIAS "D3DPERF_SetOptions" (BYVAL dwOptions AS DWORD) DECLARE FUNCTION D3DPERF_GetStatus LIB "d3d9.dll" ALIAS "D3DPERF_GetStatus" () AS DWORD
|
|
D3DX |
|
'//===========================================================================
'//
'// D3DX math functions:
'//
'// NOTE:
'// * All these functions can take the same object as in and out parameters.
'//
'// * Out parameters are typically also returned as return values, so that
'// the output of one function may be used as a parameter to another.
'//
'//===========================================================================
DECLARE FUNCTION D3DXVec2Normalize LIB "D3DX9.DLL" ALIAS "D3DXVec2Normalize" ( _
BYREF pOut AS D3DXVECTOR2, _
BYREF pV AS D3DXVECTOR2 _
) AS DWORD
'// Hermite interpolation between position V1, tangent T1 (when s == 0)
'// and position V2, tangent T2 (when s == 1).
DECLARE FUNCTION D3DXVec2Hermite LIB "D3DX9.DLL" ALIAS "D3DXVec2Hermite" ( _
BYREF pOut AS D3DXVECTOR2, _
BYREF pV1 AS D3DXVECTOR2, _
BYREF pT1 AS D3DXVECTOR2, _
BYREF pV2 AS D3DXVECTOR2, _
BYREF pT2 AS D3DXVECTOR2, _
BYVAL s AS SINGLE _
) AS DWORD
'// CatmullRom interpolation between V1 (when s == 0) and V2 (when s == 1)
DECLARE FUNCTION D3DXVec2CatmullRom LIB "D3DX9.DLL" ALIAS "D3DXVec2CatmullRom" ( _
BYREF pOut AS D3DXVECTOR2, _
BYREF pV1 AS D3DXVECTOR2, _
BYREF pV2 AS D3DXVECTOR2, _
BYREF pV3 AS D3DXVECTOR2, _
BYREF pV4 AS D3DXVECTOR2, _
BYVAL s AS SINGLE _
) AS DWORD
'// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1)
DECLARE FUNCTION D3DXVec2BaryCentric LIB "D3DX9.DLL" ALIAS "D3DXVec2BaryCentric" ( _
BYREF pOut AS D3DXVECTOR2, _
BYREF pV1 AS D3DXVECTOR2, _
BYREF pV2 AS D3DXVECTOR2, _
BYREF pV3 AS D3DXVECTOR2, _
BYVAL f AS SINGLE, _
BYVAL g AS SINGLE _
) AS DWORD
'// Transform (x, y, 0, 1) by matrix.
DECLARE FUNCTION D3DXVec2Transform LIB "D3DX9.DLL" ALIAS "D3DXVec2Transform" ( _
BYREF pOut AS D3DXVECTOR4, _
BYREF pV AS D3DXVECTOR2, _
BYREF pM AS D3DMATRIX _
) AS DWORD
'// Transform (x, y, 0, 1) by matrix, project result back into w=1.
DECLARE FUNCTION D3DXVec2TransformCoord LIB "D3DX9.DLL" ALIAS "D3DXVec2TransformCoord" ( _
BYREF pOut AS D3DXVECTOR2, _
BYREF pV AS D3DXVECTOR2, _
BYREF pM AS D3DMATRIX _
) AS DWORD
'// Transform (x, y, 0, 0) by matrix.
DECLARE FUNCTION D3DXVec2TransformNormal LIB "D3DX9.DLL" ALIAS "D3DXVec2TransformNormal" ( _
BYREF pOut AS D3DXVECTOR2, _
BYREF pV AS D3DXVECTOR2, _
BYREF pM AS D3DMATRIX _
) AS DWORD
'// Transform Array (x, y, 0, 1) by matrix.
DECLARE FUNCTION D3DXVec2TransformArray LIB "D3DX9.DLL" ALIAS "D3DXVec2TransformArray" ( _
BYREF pOut AS D3DXVECTOR4, _
BYVAL OutStride AS DWORD, _
BYREF pV AS D3DXVECTOR2, _
BYVAL VStride AS DWORD, _
BYREF pM AS D3DMATRIX _
) AS DWORD
'// Transform Array (x, y, 0, 1) by matrix, project result back into w=1.
DECLARE FUNCTION D3DXVec2TransformCoordArray LIB "D3DX9.DLL" ALIAS "D3DXVec2TransformCoordArray" ( _
BYREF pOut AS D3DXVECTOR4, _
BYVAL OutStride AS DWORD, _
BYREF pV AS D3DXVECTOR2, _
BYVAL VStride AS DWORD, _
BYREF pM AS D3DMATRIX, _
BYVAL n AS DWORD _
) AS DWORD
'// Transform Array (x, y, 0, 0) by matrix.
DECLARE FUNCTION D3DXVec2TransformNormalArray LIB "D3DX9.DLL" ALIAS "D3DXVec2TransformNormalArray" ( _
BYREF pOut AS D3DXVECTOR2, _
BYVAL OutStride AS DWORD, _
BYREF pV AS D3DXVECTOR2, _
BYVAL VStride AS DWORD, _
BYREF pM AS D3DMATRIX, _
BYVAL n AS DWORD _
) AS DWORD
'//--------------------------
'// 3D Vector
'//--------------------------
DECLARE FUNCTION D3DXVec3Normalize LIB "D3DX9.DLL" ALIAS "D3DXVec3Normalize" ( _
BYREF pOut AS D3DXVECTOR3, _
BYREF pV AS D3DXVECTOR3 _
) AS DWORD
'// Hermite interpolation between position V1, tangent T1 (when s == 0)
'// and position V2, tangent T2 (when s == 1).
DECLARE FUNCTION D3DXVec3Hermite LIB "D3DX9.DLL" ALIAS "D3DXVec3Hermite" ( _
BYREF pOut AS D3DXVECTOR3, _
BYREF pV1 AS D3DXVECTOR3, _
BYREF pT1 AS D3DXVECTOR3, _
BYREF pV2 AS D3DXVECTOR3, _
BYREF pT2 AS D3DXVECTOR3, _
BYVAL s AS SINGLE _
) AS DWORD
'// CatmullRom interpolation between V1 (when s == 0) and V2 (when s == 1)
DECLARE FUNCTION D3DXVec3CatmullRom LIB "D3DX9.DLL" ALIAS "D3DXVec3CatmullRom" ( _
BYREF pOut AS D3DXVECTOR3, _
BYREF pV1 AS D3DXVECTOR3, _
BYREF pV2 AS D3DXVECTOR3, _
BYREF pV3 AS D3DXVECTOR3, _
BYREF pV4 AS D3DXVECTOR3, _
BYVAL s AS SINGLE _
) AS DWORD
'// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1)
DECLARE FUNCTION D3DXVec3BaryCentric LIB "D3DX9.DLL" ALIAS "D3DXVec3BaryCentric" ( _
BYREF pOut AS D3DXVECTOR3, _
BYREF pV1 AS D3DXVECTOR3, _
BYREF pV2 AS D3DXVECTOR3, _
BYREF pV3 AS D3DXVECTOR3, _
BYVAL f AS SINGLE, _
BYVAL g AS SINGLE _
) AS DWORD
'// Transform (x, y, z, 1) by matrix.
DECLARE FUNCTION D3DXVec3Transform LIB "D3DX9.DLL" ALIAS "D3DXVec3Transform" ( _
BYREF pOut AS D3DXVECTOR4, _
BYREF pV AS D3DXVECTOR3, _
BYREF pM AS D3DMATRIX _
) AS DWORD
'// Transform (x, y, z, 1) by matrix, project result back into w=1.
DECLARE FUNCTION D3DXVec3TransformCoord LIB "D3DX9.DLL" ALIAS "D3DXVec3TransformCoord" ( _
BYREF pOut AS D3DXVECTOR3, _
BYREF pV AS D3DXVECTOR3, _
BYREF pM AS D3DMATRIX _
) AS DWORD
'// Transform (x, y, z, 0) by matrix. If you transforming a normal by a
'// non-affine matrix, the matrix you pass to this function should be the
'// transpose of the inverse of the matrix you would use to transform a coord.
DECLARE FUNCTION D3DXVec3TransformNormal LIB "D3DX9.DLL" ALIAS "D3DXVec3TransformNormal" ( _
BYREF pOut AS D3DXVECTOR3, _
BYREF pV AS D3DXVECTOR3, _
BYREF pM AS D3DMATRIX _
) AS DWORD
'// Transform Array (x, y, z, 1) by matrix.
DECLARE FUNCTION D3DXVec3TransformArray LIB "D3DX9.DLL" ALIAS "D3DXVec3TransformArray" ( _
BYREF pOut AS D3DXVECTOR4, _
BYVAL OutStride AS DWORD, _
BYREF pV AS D3DXVECTOR3, _
BYVAL VStride AS DWORD, _
BYREF pM AS D3DMATRIX, _
BYVAL n AS DWORD _
) AS DWORD
'// Transform Array (x, y, z, 1) by matrix, project result back into w=1.
DECLARE FUNCTION D3DXVec3TransformCoordArray LIB "D3DX9.DLL" ALIAS "D3DXVec3TransformCoordArray" ( _
BYREF pOut AS D3DXVECTOR3, _
BYVAL OutStride AS DWORD, _
BYREF pV AS D3DXVECTOR3, _
BYVAL VStride AS DWORD, _
BYREF pM AS D3DMATRIX, _
BYVAL n AS DWORD _
) AS DWORD
'// Transform (x, y, z, 0) by matrix. If you transforming a normal by a
'// non-affine matrix, the matrix you pass to this function should be the
'// transpose of the inverse of the matrix you would use to transform a coord.
DECLARE FUNCTION D3DXVec3TransformNormalArray LIB "D3DX9.DLL" ALIAS "D3DXVec3TransformNormalArray" ( _
BYREF pOut AS D3DXVECTOR3, _
BYVAL OutStride AS DWORD, _
BYREF pV AS D3DXVECTOR3, _
BYVAL VStride AS DWORD, _
BYREF pM AS D3DMATRIX, _
BYVAL n AS DWORD _
) AS DWORD
'// Project vector from object space into screen space
DECLARE FUNCTION D3DXVec3Project LIB "D3DX9.DLL" ALIAS "D3DXVec3Project" ( _
BYREF pOut AS D3DXVECTOR3, _
BYREF pV AS D3DXVECTOR3, _
BYREF pViewport AS D3DVIEWPORT9, _
BYREF pProjection AS D3DMATRIX, _
BYREF pView AS D3DMATRIX, _
BYREF pWorld AS D3DMATRIX _
) AS DWORD
'// Project vector from screen space into object space
DECLARE FUNCTION D3DXVec3Unproject LIB "D3DX9.DLL" ALIAS "D3DXVec3Uproject" ( _
BYREF pOut AS D3DXVECTOR3, _
BYREF pV AS D3DXVECTOR3, _
BYREF pViewport AS D3DVIEWPORT9, _
BYREF pProjection AS D3DMATRIX, _
BYREF pView AS D3DMATRIX, _
BYREF pWorld AS D3DMATRIX _
) AS DWORD
'// Project vector Array from object space into screen space
DECLARE FUNCTION D3DXVec3ProjectArray LIB "D3DX9.DLL" ALIAS "D3DXVec3ProjectArray" ( _
BYREF pOut AS D3DXVECTOR3, _
BYVAL OutStride AS DWORD, _
BYREF pV AS D3DXVECTOR3, _
BYVAL VStride AS DWORD, _
BYREF pViewport AS D3DVIEWPORT9, _
BYREF pProjection AS D3DMATRIX, _
BYREF pView AS D3DMATRIX, _
BYREF pWorld AS D3DMATRIX, _
BYVAL n AS DWORD _
) AS DWORD
'// Project vector Array from screen space into object space
DECLARE FUNCTION D3DXVec3UnprojectArray LIB "D3DX9.DLL" ALIAS "D3DXVec3UprojectArray" ( _
BYREF pOut AS D3DXVECTOR3, _
BYVAL OutStride AS DWORD, _
BYREF pV AS D3DXVECTOR3, _
BYVAL VStride AS DWORD, _
BYREF pViewport AS D3DVIEWPORT9, _
BYREF pProjection AS D3DMATRIX, _
BYREF pView AS D3DMATRIX, _
BYREF pWorld AS D3DMATRIX, _
BYVAL n AS DWORD _
) AS DWORD
'//--------------------------
'// 4D Vector
'//--------------------------
'// Cross-product in 4 dimensions.
DECLARE FUNCTION D3DXVec4Cross LIB "D3DX9.DLL" ALIAS "D3DXVec4Cross" ( _
BYREF pOut AS D3DXVECTOR4, _
BYREF pV1 AS D3DXVECTOR4, _
BYREF pV2 AS D3DXVECTOR4, _
BYREF pV3 AS D3DXVECTOR4 _
) AS DWORD
DECLARE FUNCTION D3DXVec4Normalize LIB "D3DX9.DLL" ALIAS "D3DXVec4Normalize" ( _
BYREF pOut AS D3DXVECTOR4, _
BYREF pV AS D3DXVECTOR4 _
) AS DWORD
'// Hermite interpolation between position V1, tangent T1 (when s == 0)
'// and position V2, tangent T2 (when s == 1).
DECLARE FUNCTION D3DXVec4Hermite LIB "D3DX9.DLL" ALIAS "D3DXVec4Hermite" ( _
BYREF pOut AS D3DXVECTOR4, _
BYREF pV1 AS D3DXVECTOR4, _
BYREF pT1 AS D3DXVECTOR4, _
BYREF pV2 AS D3DXVECTOR4, _
BYREF pT2 AS D3DXVECTOR4, _
BYVAL s AS SINGLE _
) AS DWORD
'// CatmullRom interpolation between V1 (when s == 0) and V2 (when s == 1)
DECLARE FUNCTION D3DXVec4CatmullRom LIB "D3DX9.DLL" ALIAS "D3DXVec4CatmullRom" ( _
BYREF pOut AS D3DXVECTOR4, _
BYREF pV1 AS D3DXVECTOR4, _
BYREF pV2 AS D3DXVECTOR4, _
BYREF pV3 AS D3DXVECTOR4, _
BYREF pV4 AS D3DXVECTOR4, _
BYVAL s AS SINGLE _
) AS DWORD
'// Barycentric coordinates. V1 + f(V2-V1) + g(V3-V1)
DECLARE FUNCTION D3DXVec4BaryCentric LIB "D3DX9.DLL" ALIAS "D3DXVec4BaryCentric" ( _
BYREF pOut AS D3DXVECTOR4, _
BYREF pV1 AS D3DXVECTOR4, _
BYREF pV2 AS D3DXVECTOR4, _
BYREF pV3 AS D3DXVECTOR4, _
BYVAL f AS SINGLE, _
BYVAL s AS SINGLE _
) AS DWORD
'// Transform vector by matrix.
DECLARE FUNCTION D3DXVec4Transform LIB "D3DX9.DLL" ALIAS "D3DXVec4Transform" ( _
BYREF pOut AS D3DXVECTOR4, _
BYREF pV AS D3DXVECTOR4, _
BYREF pM AS D3DMATRIX _
) AS DWORD
'// Transform vector array by matrix.
DECLARE FUNCTION D3DXVec4TransformArray LIB "D3DX9.DLL" ALIAS "D3DXVec4TransformArray" ( _
BYREF pOut AS D3DXVECTOR4, _
BYVAL OutStride AS DWORD, _
BYREF pV AS D3DXVECTOR4, _
BYVAL VStride AS DWORD, _
BYREF pM AS D3DMATRIX, _
BYVAL n AS DWORD _
) AS DWORD
'//--------------------------
'// 4D Matrix
'//--------------------------
DECLARE FUNCTION D3DXMatrixDeterminant LIB "D3DX9.DLL" ALIAS "D3DXMatrixDeterminant" ( _
BYREF pM AS D3DMATRIX _
) AS SINGLE
DECLARE FUNCTION D3DXMatrixDecompose LIB "D3DX9.DLL" ALIAS "D3DXMatrixDecompose" ( _
BYREF pOutScale AS D3DXVECTOR3, _
BYREF pOutRotation AS D3DXQUATERNION, _
BYREF pOutTranslation AS D3DXVECTOR3, _
BYREF pM AS D3DMATRIX _
) AS LONG
DECLARE FUNCTION D3DXMatrixTranspose LIB "D3DX9.DLL" ALIAS "D3DXMatrixTranspose" ( _
BYREF pOut AS D3DMATRIX, _
BYREF pM AS D3DMATRIX _
) AS DWORD
'// Matrix multiplication. The result represents the transformation M2
'// followed by the transformation M1. (Out = M1 * M2)
DECLARE FUNCTION D3DXMatrixMultiply LIB "D3DX9.DLL" ALIAS "D3DXMatrixMultiply" ( _
BYREF pOut AS D3DMATRIX, _
BYREF pM1 AS D3DMATRIX, _
BYREF pM2 AS D3DMATRIX _
) AS DWORD
'// Matrix multiplication, followed by a transpose. (Out = T(M1 * M2))
DECLARE FUNCTION D3DXMatrixMultiplyTranspose LIB "D3DX9.DLL" ALIAS "D3DXMatrixMultiplyTranspose" ( _
BYREF pOut AS D3DMATRIX, _
BYREF pM1 AS D3DMATRIX, _
BYREF pM2 AS D3DMATRIX _
) AS DWORD
'// Calculate inverse of matrix. Inversion my fail, in which case NULL will
'// be returned. The determinant of pM is also returned it pfDeterminant
'// is non-NULL.
DECLARE FUNCTION D3DXMatrixInverse LIB "D3DX9.DLL" ALIAS "D3DXMatrixInverse" ( _
BYREF pOut AS D3DMATRIX, _
BYREF pDeterminant AS SINGLE, _
BYREF pM AS D3DMATRIX _
) AS DWORD
'// Build a matrix which scales by (sx, sy, sz)
DECLARE FUNCTION D3DXMatrixScaling LIB "D3DX9.DLL" ALIAS "D3DXMatrixScaling" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL sz AS SINGLE, _
BYVAL sy AS SINGLE, _
BYVAL sz AS SINGLE _
) AS DWORD
'// Build a matrix which translates by (x, y, z)
DECLARE FUNCTION D3DXMatrixTranslation LIB "D3DX9.DLL" ALIAS "D3DXMatrixTranslation" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL x AS SINGLE, _
BYVAL y AS SINGLE, _
BYVAL z AS SINGLE _
) AS DWORD
'// Build a matrix which rotates around the X axis
DECLARE FUNCTION D3DXMatrixRotationX LIB "D3DX9.DLL" ALIAS "D3DXMatrixRotationX" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL Angle AS SINGLE _
) AS DWORD
'// Build a matrix which rotates around the Y axis
DECLARE FUNCTION D3DXMatrixRotationY LIB "D3DX9.DLL" ALIAS "D3DXMatrixRotationY" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL Angle AS SINGLE _
) AS DWORD
'// Build a matrix which rotates around the Z axis
DECLARE FUNCTION D3DXMatrixRotationZ LIB "D3DX9.DLL" ALIAS "D3DXMatrixRotationZ" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL Angle AS SINGLE _
) AS DWORD
'// Build a matrix which rotates around an arbitrary axis
DECLARE FUNCTION D3DXMatrixRotationAxis LIB "D3DX9.DLL" ALIAS "D3DXMatrixRotationAxis" ( _
BYREF pOut AS D3DMATRIX, _
BYREF pV AS D3DXVECTOR3, _
BYVAL Angle AS SINGLE _
) AS DWORD
'// Build a matrix from a quaternion
DECLARE FUNCTION D3DXMatrixRotationQuaternion LIB "D3DX9.DLL" ALIAS "D3DXMatrixRotationQuaternion" ( _
BYREF pOut AS D3DMATRIX, _
BYREF pQ AS D3DXQUATERNION _
) AS DWORD
'// Yaw around the Y axis, a pitch around the X axis,
'// and a roll around the Z axis.
DECLARE FUNCTION D3DXMatrixRotationYawPitchRoll LIB "D3DX9.DLL" ALIAS "D3DXMatrixRotationYawPitchRoll" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL Yaw AS SINGLE, _
BYVAL Pitch AS SINGLE, _
BYVAL Roll AS SINGLE _
) AS DWORD
'// Build transformation matrix. NULL arguments are treated as identity.
'// Mout = Msc-1 * Msr-1 * Ms * Msr * Msc * Mrc-1 * Mr * Mrc * Mt
DECLARE FUNCTION D3DXMatrixTransformation LIB "D3DX9.DLL" ALIAS "D3DXMatrixTransformation" ( _
BYREF pOut AS D3DMATRIX, _
BYREF pScalingCenter AS D3DXVECTOR3, _
BYREF pScalingRotation AS D3DXQUATERNION, _
BYREF pScaling AS D3DXVECTOR3, _
BYREF pRotationCenter AS D3DXVECTOR3, _
BYREF pRotation AS D3DXQUATERNION, _
BYREF pTranslation AS D3DXVECTOR3 _
) AS DWORD
'// Build 2D transformation matrix in XY plane. NULL arguments are treated as identity.
'// Mout = Msc-1 * Msr-1 * Ms * Msr * Msc * Mrc-1 * Mr * Mrc * Mt
DECLARE FUNCTION D3DXMatrixTransformation2D LIB "D3DX9.DLL" ALIAS "D3DXMatrixTransformation2D" ( _
BYREF pOut AS D3DMATRIX, _
BYREF pScalingCenter AS D3DXVECTOR2, _
BYVAL ScalingRotation AS SINGLE, _
BYREF pScaling AS D3DXVECTOR2, _
BYREF pRotationCenter AS D3DXVECTOR2, _
BYVAL Rotation AS SINGLE, _
BYREF pTranslation AS D3DXVECTOR2 _
) AS DWORD
'// Build affine transformation matrix. NULL arguments are treated as identity.
'// Mout = Ms * Mrc-1 * Mr * Mrc * Mt
DECLARE FUNCTION D3DXMatrixAffineTransformation LIB "D3DX9.DLL" ALIAS "D3DXMatrixAffineTransformation" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL Scaling AS SINGLE, _
BYREF pRotationCenter AS D3DXVECTOR3, _
BYREF pRotation AS D3DXQUATERNION, _
BYREF pTranslation AS D3DXVECTOR3 _
) AS DWORD
'// Build 2D affine transformation matrix in XY plane. NULL arguments are treated as identity.
'// Mout = Ms * Mrc-1 * Mr * Mrc * Mt
DECLARE FUNCTION D3DXMatrixAffineTransformation2D LIB "D3DX9.DLL" ALIAS "D3DXMatrixAffineTransformation2D" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL Scaling AS SINGLE, _
BYREF pRotationCenter AS D3DXVECTOR2, _
BYVAL pRotation AS SINGLE, _
BYREF pTranslation AS D3DXVECTOR2 _
) AS DWORD
'// Build a lookat matrix. (right-handed)
DECLARE FUNCTION D3DXMatrixLookAtRH LIB "D3DX9.DLL" ALIAS "D3DXMatrixLookAtRH" ( _
BYREF pOut AS D3DMATRIX, _
BYREF pEye AS D3DXVECTOR3, _
BYREF pAt AS D3DXVECTOR3, _
BYREF pUp AS D3DXVECTOR3 _
) AS DWORD
'// Build a lookat matrix. (left-handed)
DECLARE FUNCTION D3DXMatrixLookAtLH LIB "D3DX9.DLL" ALIAS "D3DXMatrixLookAtLH" ( _
BYREF pOut AS D3DMATRIX, _
BYREF pEye AS D3DXVECTOR3, _
BYREF pAt AS D3DXVECTOR3, _
BYREF pUp AS D3DXVECTOR3 _
) AS DWORD
'// Build a perspective projection matrix. (right-handed)
DECLARE FUNCTION D3DXMatrixPerspectiveRH LIB "D3DX9.DLL" ALIAS "D3DXMatrixPerspectiveRH" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL w AS SINGLE, _
BYVAL h AS SINGLE, _
BYVAL zn AS SINGLE, _
BYVAL zf AS SINGLE _
) AS DWORD
'// Build a perspective projection matrix. (left-handed)
DECLARE FUNCTION D3DXMatrixPerspectiveLH LIB "D3DX9.DLL" ALIAS "D3DXMatrixPerspectiveLH" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL w AS SINGLE, _
BYVAL h AS SINGLE, _
BYVAL zn AS SINGLE, _
BYVAL zf AS SINGLE _
) AS DWORD
'// Build a perspective projection matrix. (right-handed)
DECLARE FUNCTION D3DXMatrixPerspectiveFovRH LIB "D3DX9.DLL" ALIAS "D3DXMatrixPerspectiveFovRH" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL fovY AS SINGLE, _
BYVAL Aspect AS SINGLE, _
BYVAL zn AS SINGLE, _
BYVAL zf AS SINGLE _
) AS DWORD
'// Build a perspective projection matrix. (left-handed)
DECLARE FUNCTION D3DXMatrixPerspectiveFovLH LIB "D3DX9.DLL" ALIAS "D3DXMatrixPerspectiveFovLH" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL fovY AS SINGLE, _
BYVAL Aspect AS SINGLE, _
BYVAL zn AS SINGLE, _
BYVAL zf AS SINGLE _
) AS DWORD
'// Build a perspective projection matrix. (right-handed)
DECLARE FUNCTION D3DXMatrixPerspectiveOffCenterRH LIB "D3DX9.DLL" ALIAS "D3DXMatrixPerspectiveOffCenterRH" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL l AS SINGLE, _
BYVAL r AS SINGLE, _
BYVAL b AS SINGLE, _
BYVAL t AS SINGLE, _
BYVAL zn AS SINGLE, _
BYVAL zf AS SINGLE _
) AS DWORD
'// Build a perspective projection matrix. (left-handed)
DECLARE FUNCTION D3DXMatrixPerspectiveOffCenterLH LIB "D3DX9.DLL" ALIAS "D3DXMatrixPerspectiveOffCenterLH" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL l AS SINGLE, _
BYVAL r AS SINGLE, _
BYVAL b AS SINGLE, _
BYVAL t AS SINGLE, _
BYVAL zn AS SINGLE, _
BYVAL zf AS SINGLE _
) AS DWORD
'// Build an ortho projection matrix. (right-handed)
DECLARE FUNCTION D3DXMatrixOrthoRH LIB "D3DX9.DLL" ALIAS "D3DXMatrixOrthoRH" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL w AS SINGLE, _
BYVAL h AS SINGLE, _
BYVAL zn AS SINGLE, _
BYVAL zf AS SINGLE _
) AS DWORD
'// Build an ortho projection matrix. (left-handed)
DECLARE FUNCTION D3DXMatrixOrthoLH LIB "D3DX9.DLL" ALIAS "D3DXMatrixOrthoLH" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL w AS SINGLE, _
BYVAL h AS SINGLE, _
BYVAL zn AS SINGLE, _
BYVAL zf AS SINGLE _
) AS DWORD
'// Build an ortho projection matrix. (right-handed)
DECLARE FUNCTION D3DXMatrixOrthoOffCenterRH LIB "D3DX9.DLL" ALIAS "D3DXMatrixOrthoOffCenterRH" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL l AS SINGLE, _
BYVAL r AS SINGLE, _
BYVAL b AS SINGLE, _
BYVAL t AS SINGLE, _
BYVAL zn AS SINGLE, _
BYVAL zf AS SINGLE _
) AS DWORD
'// Build an ortho projection matrix. (left-handed)
DECLARE FUNCTION D3DXMatrixOrthoOffCenterLH LIB "D3DX9.DLL" ALIAS "D3DXMatrixOrthoOffCenterLH" ( _
BYREF pOut AS D3DMATRIX, _
BYVAL l AS SINGLE, _
BYVAL r AS SINGLE, _
BYVAL b AS SINGLE, _
BYVAL t AS SINGLE, _
BYVAL zn AS SINGLE, _
BYVAL zf AS SINGLE _
) AS DWORD
'// Build a matrix which flattens geometry into a plane, as if casting
'// a shadow from a light.
DECLARE FUNCTION D3DXMatrixShadow LIB "D3DX9.DLL" ALIAS "D3DXMatrixShadow" ( _
BYREF pOut AS D3DMATRIX, _
BYREF pLight AS D3DXVECTOR4, _
BYREF pPlane AS D3DXPLANE _
) AS DWORD
'// Build a matrix which reflects the coordinate system about a plane
DECLARE FUNCTION D3DXMatrixReflect LIB "D3DX9.DLL" ALIAS "D3DXMatrixReflect" ( _
BYREF pOut AS D3DMATRIX, _
BYREF pPlane AS D3DXPLANE _
) AS DWORD
'//--------------------------
'// Quaternion
'//--------------------------
'// Compute a quaternin's axis and angle of rotation. Expects unit quaternions.
DECLARE SUB D3DXQuaternionToAxisAngle LIB "D3DX9.DLL" ALIAS "D3DXQuaternionToAxisAngle" ( _
BYREF pQ AS D3DXQUATERNION, _
BYREF pAxis AS D3DXVECTOR3, _
BYREF pAngle AS SINGLE _
)
'// Build a quaternion from a rotation matrix.
DECLARE FUNCTION D3DXQuaternionRotationMatrix LIB "D3DX9.DLL" ALIAS "D3DXQuaternionRotationMatrix" ( _
BYREF pOut AS D3DXQUATERNION, _
BYREF pM AS D3DMATRIX _
) AS DWORD
'// Rotation about arbitrary axis.
DECLARE FUNCTION D3DXQuaternionRotationAxis LIB "D3DX9.DLL" ALIAS "D3DXQuaternionRotationAxis" ( _
BYREF pOut AS D3DXQUATERNION, _
BYREF pV AS D3DXVECTOR3, _
BYVAL Angle AS SINGLE _
) AS DWORD
'// Yaw around the Y axis, a pitch around the X axis,
'// and a roll around the Z axis.
DECLARE FUNCTION D3DXQuaternionRotationYawPitchRoll LIB "D3DX9.DLL" ALIAS "D3DXQuaternionRotationYawPitchRoll" ( _
BYREF pOut AS D3DXQUATERNION, _
BYVAL Yaw AS SINGLE, _
BYVAL Pitch AS SINGLE, _
BYVAL Roll AS SINGLE _
) AS DWORD
'// Quaternion multiplication. The result represents the rotation Q2
'// followed by the rotation Q1. (Out = Q2 * Q1)
DECLARE FUNCTION D3DXQuaternionMultiply LIB "D3DX9.DLL" ALIAS "D3DXQuaternionMultiply" ( _
BYREF pOut AS D3DXQUATERNION, _
BYREF pQ1 AS D3DXQUATERNION, _
BYREF pQ2 AS D3DXQUATERNION _
) AS DWORD
DECLARE FUNCTION D3DXQuaternionNormalize LIB "D3DX9.DLL" ALIAS "D3DXQuaternionNormalize" ( _
BYREF pOut AS D3DXQUATERNION, _
BYREF pQ AS D3DXQUATERNION _
) AS DWORD
'// Conjugate and re-norm
DECLARE FUNCTION D3DXQuaternionInverse LIB "D3DX9.DLL" ALIAS "D3DXQuaternionInverse" ( _
BYREF pOut AS D3DXQUATERNION, _
BYREF pQ AS D3DXQUATERNION _
) AS DWORD
'// Expects unit quaternions.
'// if q = (cos(theta), sin(theta) * v); ln(q) = (0, theta * v)
DECLARE FUNCTION D3DXQuaternionLn LIB "D3DX9.DLL" ALIAS "D3DXQuaternionLn" ( _
BYREF pOut AS D3DXQUATERNION, _
BYREF pQ AS D3DXQUATERNION _
) AS DWORD
'// Expects pure quaternions. (w == 0) w is ignored in calculation.
'// if q = (0, theta * v); exp(q) = (cos(theta), sin(theta) * v)
DECLARE FUNCTION D3DXQuaternionExp LIB "D3DX9.DLL" ALIAS "D3DXQuaternionExp" ( _
BYREF pOut AS D3DXQUATERNION, _
BYREF pQ AS D3DXQUATERNION _
) AS DWORD
'// Spherical linear interpolation between Q1 (t == 0) and Q2 (t == 1).
'// Expects unit quaternions.
DECLARE FUNCTION D3DXQuaternionSlerp LIB "D3DX9.DLL" ALIAS "D3DXQuaternionSlerp" ( _
BYREF pOut AS D3DXQUATERNION, _
BYREF pQ1 AS D3DXQUATERNION, _
BYREF pQ2 AS D3DXQUATERNION, _
BYVAL t AS SINGLE _
) AS DWORD
'// Spherical quadrangle interpolation.
'// Slerp(Slerp(Q1, C, t), Slerp(A, B, t), 2t(1-t))
DECLARE FUNCTION D3DXQuaternionSquad LIB "D3DX9.DLL" ALIAS "D3DXQuaternionSquad" ( _
BYREF pOut AS D3DXQUATERNION, _
BYREF pQ1 AS D3DXQUATERNION, _
BYREF pA AS D3DXQUATERNION, _
BYREF pB AS D3DXQUATERNION, _
BYREF pC AS D3DXQUATERNION, _
BYVAL t AS SINGLE _
) AS DWORD
'// Setup control points for spherical quadrangle interpolation
'// from Q1 to Q2. The control points are chosen in such a way
'// to ensure the continuity of tangents with adjacent segments.
DECLARE FUNCTION D3DXQuaternionSquadSetup LIB "D3DX9.DLL" ALIAS "D3DXQuaternionSquadSetup" ( _
BYREF pAOut AS D3DXQUATERNION, _
BYREF pBOut AS D3DXQUATERNION, _
BYREF pCOut AS D3DXQUATERNION, _
BYREF pQ0 AS D3DXQUATERNION, _
BYREF pQ1 AS D3DXQUATERNION, _
BYREF pQ2 AS D3DXQUATERNION, _
BYREF pQ3 AS D3DXQUATERNION _
) AS DWORD
'// Barycentric interpolation.
'// Slerp(Slerp(Q1, Q2, f+g), Slerp(Q1, Q3, f+g), g/(f+g))
DECLARE FUNCTION D3DXQuaternionBaryCentric LIB "D3DX9.DLL" ALIAS "D3DXQuaternionBaryCentric" ( _
BYREF pOut AS D3DXQUATERNION, _
BYREF pQ1 AS D3DXQUATERNION, _
BYREF pQ2 AS D3DXQUATERNION, _
BYREF pQ3 AS D3DXQUATERNION, _
BYVAL f AS SINGLE, _
BYVAL g AS SINGLE _
) AS DWORD
'//--------------------------
'// Plane
'//--------------------------
'// Normalize plane (so that |a,b,c| == 1)
DECLARE FUNCTION D3DXPlaneNormalize LIB "D3DX9.DLL" ALIAS "D3DXPlaneNormalize" ( _
BYREF pOut AS D3DXPLANE, _
BYREF pP AS D3DXPLANE _
) AS DWORD
'// Find the intersection between a plane and a line. If the line is
'// parallel to the plane, NULL is returned.
DECLARE FUNCTION D3DXPlaneIntersectLine LIB "D3DX9.DLL" ALIAS "D3DXPlaneIntersectLine" ( _
BYREF pOut AS D3DXVECTOR3, _
BYREF pP AS D3DXPLANE, _
BYREF pV1 AS D3DXVECTOR3, _
BYREF pV2 AS D3DXVECTOR3 _
) AS DWORD
'// Construct a plane from a point and a normal
DECLARE FUNCTION D3DXPlaneFromPointNormal LIB "D3DX9.DLL" ALIAS "D3DXPlaneFromPointNormal" ( _
BYREF pOut AS D3DXPLANE, _
BYREF pPoint AS D3DXVECTOR3, _
BYREF pNormal AS D3DXVECTOR3 _
) AS DWORD
'// Construct a plane from 3 points
DECLARE FUNCTION D3DXPlaneFromPoints LIB "D3DX9.DLL" ALIAS "D3DXPlaneFromPoints" ( _
BYREF pOut AS D3DXPLANE, _
BYREF pV1 AS D3DXVECTOR3, _
BYREF pV2 AS D3DXVECTOR3, _
BYREF pV3 AS D3DXVECTOR3 _
) AS DWORD
'// Transform a plane by a matrix. The vector (a,b,c) must be normal.
'// M should be the inverse transpose of the transformation desired.
DECLARE FUNCTION D3DXPlaneTransform LIB "D3DX9.DLL" ALIAS "D3DXPlaneTransform" ( _
BYREF pOut AS D3DXPLANE, _
BYREF pP AS D3DXPLANE, _
BYREF pM AS D3DMATRIX _
) AS DWORD
'// Transform an array of planes by a matrix. The vectors (a,b,c) must be normal.
'// M should be the inverse transpose of the transformation desired.
DECLARE FUNCTION D3DXPlaneTransformArray LIB "D3DX9.DLL" ALIAS "D3DXPlaneTransformArray" ( _
BYREF pOut AS D3DXPLANE, _
BYVAL OutStride AS DWORD, _
BYREF pP AS D3DXPLANE, _
BYVAL pStride AS DWORD, _
BYREF pM AS D3DMATRIX, _
BYVAL n AS DWORD _
) AS DWORD
'//--------------------------
'// Color
'//--------------------------
'// inline
'// (1-r, 1-g, 1-b, a)
'D3DXCOLOR* D3DXColorNegative
' (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC);
'D3DXCOLOR* D3DXColorAdd
' (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2);
'D3DXCOLOR* D3DXColorSubtract
' (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2);
'D3DXCOLOR* D3DXColorScale
' (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC, FLOAT s);
'// (r1*r2, g1*g2, b1*b2, a1*a2)
'D3DXCOLOR* D3DXColorModulate
' (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2);
'// Linear interpolation of r,g,b, and a. C1 + s(C2-C1)
'D3DXCOLOR* D3DXColorLerp
' (D3DXCOLOR *pOut, CONST D3DXCOLOR *pC1, CONST D3DXCOLOR *pC2, FLOAT s);
'// non-inline
'// Interpolate r,g,b between desaturated color and color.
'// DesaturatedColor + s(Color - DesaturatedColor)
DECLARE FUNCTION D3DXColorAdjustSaturation LIB "D3DX9.DLL" ALIAS "D3DXColorAdjustSaturation" ( _
BYREF pOut AS D3DXCOLOR, _
BYREF pC AS D3DXCOLOR, _
BYVAL s AS SINGLE _
) AS DWORD
'// Interpolate r,g,b between 50% grey and color. Grey + s(Color - Grey)
DECLARE FUNCTION D3DXColorAdjustContrast LIB "D3DX9.DLL" ALIAS "D3DXColorAdjustContrast" ( _
BYREF pOut AS D3DXCOLOR, _
BYREF pC AS D3DXCOLOR, _
BYVAL s AS SINGLE _
) AS DWORD
'//--------------------------
'// Misc
'//--------------------------
'// Calculate Fresnel term given the cosine of theta (likely obtained by
'// taking the dot of two normals), and the refraction index of the material.
DECLARE FUNCTION D3DXFresnelTerm LIB "D3DX9.DLL" ALIAS "D3DXFresnelTerm" ( _
BYVAL CosTheta AS SINGLE,_
BYVAL RefractionIndex AS SINGLE _
) AS SINGLE
|
|
'//===========================================================================
'//
'// Matrix Stack
'//
'//===========================================================================
DECLARE FUNCTION D3DXCreateMatrixStack LIB "D3DX9.DLL" ALIAS "D3DXCreateMatrixStack" (_
BYVAL Flags AS DWORD, _
BYREF ppStack AS DWORD _
) AS LONG
'//============================================================================
'//
'// Basic Spherical Harmonic math routines
'//
'//============================================================================
'//============================================================================
'//
'// D3DXSHEvalDirection:
'// --------------------
'// Evaluates the Spherical Harmonic basis functions
'//
'// Parameters:
'// pOut
'// Output SH coefficients - basis function Ylm is stored at l*l + m+l
'// This is the pointer that is returned.
'// Order
'// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
'// pDir
'// Direction to evaluate in - assumed to be normalized
'//
'//============================================================================
DECLARE FUNCTION D3DXSHEvalDirection LIB "D3DX9.DLL" ALIAS "D3DXSHEvalDirection" (_
BYREF pOut AS DWORD, _
BYVAL Order AS DWORD, _
BYREF pDir AS D3DXVECTOR3 _
) AS SINGLE
'//============================================================================
'//
'// D3DXSHRotate:
'// --------------------
'// Rotates SH vector by a rotation matrix
'//
'// Parameters:
'// pOut
'// Output SH coefficients - basis function Ylm is stored at l*l + m+l
'// This is the pointer that is returned (should not alias with pIn.)
'// Order
'// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
'// pMatrix
'// Matrix used for rotation - rotation sub matrix should be orthogonal
'// and have a unit determinant.
'// pIn
'// Input SH coeffs (rotated), incorect results if this is also output.
'//
'//============================================================================
DECLARE FUNCTION D3DXSHRotate LIB "D3DX9.DLL" ALIAS "D3DXSHRotate" (_
BYREF pOut AS DWORD, _
BYVAL Order AS DWORD, _
BYREF pMatrix AS D3DMATRIX, _
BYVAL pIn AS DWORD _
) AS SINGLE
'//============================================================================
'//
'// D3DXSHRotateZ:
'// --------------------
'// Rotates the SH vector in the Z axis by an angle
'//
'// Parameters:
'// pOut
'// Output SH coefficients - basis function Ylm is stored at l*l + m+l
'// This is the pointer that is returned (should not alias with pIn.)
'// Order
'// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
'// Angle
'// Angle in radians to rotate around the Z axis.
'// pIn
'// Input SH coeffs (rotated), incorect results if this is also output.
'//
'//============================================================================
DECLARE FUNCTION D3DXSHRotateZ LIB "D3DX9.DLL" ALIAS "D3DXSHRotateZ" (_
BYREF pOut AS DWORD, _
BYVAL Order AS DWORD, _
BYVAL Angle AS SINGLE, _
BYVAL pIn AS DWORD _
) AS SINGLE
'//============================================================================
'//
'// D3DXSHAdd:
'// --------------------
'// Adds two SH vectors, pOut[i] = pA[i] + pB[i];
'//
'// Parameters:
'// pOut
'// Output SH coefficients - basis function Ylm is stored at l*l + m+l
'// This is the pointer that is returned.
'// Order
'// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
'// pA
'// Input SH coeffs.
'// pB
'// Input SH coeffs (second vector.)
'//
'//============================================================================
DECLARE FUNCTION D3DXSHAdd LIB "D3DX9.DLL" ALIAS "D3DXSHAdd" (_
BYREF pOut AS DWORD, _
BYVAL Order AS DWORD, _
BYVAL pA AS DWORD, _
BYVAL pB AS DWORD _
) AS SINGLE
'//============================================================================
'//
'// D3DXSHScale:
'// --------------------
'// Adds two SH vectors, pOut[i] = pA[i]*Scale;
'//
'// Parameters:
'// pOut
'// Output SH coefficients - basis function Ylm is stored at l*l + m+l
'// This is the pointer that is returned.
'// Order
'// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
'// pIn
'// Input SH coeffs.
'// Scale
'// Scale factor.
'//
'//============================================================================
DECLARE FUNCTION D3DXSHScale LIB "D3DX9.DLL" ALIAS "D3DXSHScale" (_
BYREF pOut AS DWORD, _
BYVAL Order AS DWORD, _
BYVAL pIn AS DWORD, _
BYVAL SCALE AS DWORD _
) AS SINGLE
'//============================================================================
'//
'// D3DXSHDot:
'// --------------------
'// Computes the dot product of two SH vectors
'//
'// Parameters:
'// Order
'// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
'// pA
'// Input SH coeffs.
'// pB
'// Second set of input SH coeffs.
'//
'//============================================================================
DECLARE FUNCTION D3DXSHDot LIB "D3DX9.DLL" ALIAS "D3DXSHDot" (_
BYVAL Order AS DWORD, _
BYVAL pA AS DWORD, _
BYVAL pB AS DWORD _
) AS SINGLE
'//============================================================================
'//
'// Basic Spherical Harmonic lighting routines
'//
'//============================================================================
'//============================================================================
'//
'// D3DXSHEvalDirectionalLight:
'// --------------------
'// Evaluates a directional light and returns spectral SH data. The output
'// vector is computed so that if the intensity of R/G/B is unit the resulting
'// exit radiance of a point directly under the light on a diffuse object with
'// an albedo of 1 would be 1.0. This will compute 3 spectral samples, pROut
'// has to be specified, while pGout and pBout are optional.
'//
'// Parameters:
'// Order
'// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
'// pDir
'// Direction light is coming from (assumed to be normalized.)
'// RIntensity
'// Red intensity of light.
'// GIntensity
'// Green intensity of light.
'// BIntensity
'// Blue intensity of light.
'// pROut
'// Output SH vector for Red.
'// pGOut
'// Output SH vector for Green (optional.)
'// pBOut
'// Output SH vector for Blue (optional.)
'//
'//============================================================================
DECLARE FUNCTION D3DXSHEvalDirectionalLight LIB "D3DX9.DLL" ALIAS "D3DXSHEvalDirectionalLight" (_
BYVAL Order AS DWORD, _
BYREF pDir AS D3DXVECTOR3, _
BYVAL RIntensity AS SINGLE, _
BYVAL GIntensity AS SINGLE, _
BYVAL BIntensity AS SINGLE, _
BYVAL pROut AS DWORD, _
BYVAL pGOut AS DWORD, _
BYVAL pBOut AS DWORD _
) AS LONG
'//============================================================================
'//
'// D3DXSHEvalSphericalLight:
'// --------------------
'// Evaluates a spherical light and returns spectral SH data. There is no
'// normalization of the intensity of the light like there is for directional
'// lights, care has to be taken when specifiying the intensities. This will
'// compute 3 spectral samples, pROut has to be specified, while pGout and
'// pBout are optional.
'//
'// Parameters:
'// Order
'// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
'// pPos
'// Position of light - reciever is assumed to be at the origin.
'// Radius
'// Radius of the spherical light source.
'// RIntensity
'// Red intensity of light.
'// GIntensity
'// Green intensity of light.
'// BIntensity
'// Blue intensity of light.
'// pROut
'// Output SH vector for Red.
'// pGOut
'// Output SH vector for Green (optional.)
'// pBOut
'// Output SH vector for Blue (optional.)
'//
'//============================================================================
DECLARE FUNCTION D3DXSHEvalSphericalLight LIB "D3DX9.DLL" ALIAS "D3DXSHEvalSphericalLight" (_
BYVAL Order AS DWORD, _
BYREF pPos AS D3DXVECTOR3, _
BYVAL Radius AS SINGLE, _
BYVAL RIntensity AS SINGLE, _
BYVAL GIntensity AS SINGLE, _
BYVAL BIntensity AS SINGLE, _
BYVAL pROut AS DWORD, _
BYVAL pGOut AS DWORD, _
BYVAL pBOut AS DWORD _
) AS LONG
'//============================================================================
'//
'// D3DXSHEvalConeLight:
'// --------------------
'// Evaluates a light that is a cone of constant intensity and returns spectral
'// SH data. The output vector is computed so that if the intensity of R/G/B is
'// unit the resulting exit radiance of a point directly under the light oriented
'// in the cone direction on a diffuse object with an albedo of 1 would be 1.0.
'// This will compute 3 spectral samples, pROut has to be specified, while pGout
'// and pBout are optional.
'//
'// Parameters:
'// Order
'// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
'// pDir
'// Direction light is coming from (assumed to be normalized.)
'// Radius
'// Radius of cone in radians.
'// RIntensity
'// Red intensity of light.
'// GIntensity
'// Green intensity of light.
'// BIntensity
'// Blue intensity of light.
'// pROut
'// Output SH vector for Red.
'// pGOut
'// Output SH vector for Green (optional.)
'// pBOut
'// Output SH vector for Blue (optional.)
'//
'//============================================================================
DECLARE FUNCTION D3DXSHEvalConeLight LIB "D3DX9.DLL" ALIAS "D3DXSHEvalConeLight" (_
BYVAL Order AS DWORD, _
BYREF pDir AS D3DXVECTOR3, _
BYVAL Radius AS SINGLE, _
BYVAL RIntensity AS SINGLE, _
BYVAL GIntensity AS SINGLE, _
BYVAL BIntensity AS SINGLE, _
BYVAL pROut AS DWORD, _
BYVAL pGOut AS DWORD, _
BYVAL pBOut AS DWORD _
) AS LONG
'//============================================================================
'//
'// D3DXSHEvalHemisphereLight:
'// --------------------
'// Evaluates a light that is a linear interpolant between two colors over the
'// sphere. The interpolant is linear along the axis of the two points, not
'// over the surface of the sphere (ie: if the axis was (0,0,1) it is linear in
'// Z, not in the azimuthal angle.) The resulting spherical lighting function
'// is normalized so that a point on a perfectly diffuse surface with no
'// shadowing and a normal pointed in the direction pDir would result in exit
'// radiance with a value of 1 if the top color was white and the bottom color
'// was black. This is a very simple model where Top represents the intensity
'// of the "sky" and Bottom represents the intensity of the "ground".
'//
'// Parameters:
'// Order
'// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
'// pDir
'// Axis of the hemisphere.
'// Top
'// Color of the upper hemisphere.
'// Bottom
'// Color of the lower hemisphere.
'// pROut
'// Output SH vector for Red.
'// pGOut
'// Output SH vector for Green
'// pBOut
'// Output SH vector for Blue
'//
'//============================================================================
DECLARE FUNCTION D3DXSHEvalHemisphereLight LIB "D3DX9.DLL" ALIAS "D3DXSHEvalHemisphereLight" (_
BYVAL Order AS DWORD, _
BYREF pDir AS D3DXVECTOR3, _
BYREF Top AS D3DXCOLOR, _
BYREF Bottom AS D3DXCOLOR, _
BYVAL pROut AS DWORD, _
BYVAL pGOut AS DWORD, _
BYVAL pBOut AS DWORD _
) AS LONG
'//============================================================================
'//
'// Basic Spherical Harmonic projection routines
'//
'//============================================================================
'//============================================================================
'//
'// D3DXSHProjectCubeMap:
'// --------------------
'// Projects a function represented on a cube map into spherical harmonics.
'//
'// Parameters:
'// Order
'// Order of the SH evaluation, generates Order^2 coefs, degree is Order-1
'// pCubeMap
'// CubeMap that is going to be projected into spherical harmonics
'// pROut
'// Output SH vector for Red.
'// pGOut
'// Output SH vector for Green
'// pBOut
'// Output SH vector for Blue
'//
'//============================================================================
DECLARE FUNCTION D3DXSHProjectCubeMap LIB "D3DX9.DLL" ALIAS "D3DXSHProjectCubeMap" (_
BYVAL uOrder AS DWORD, _
BYVAL pCubeMap AS DWORD, _
BYVAL pROut AS DWORD, _
BYVAL pGOut AS DWORD, _
BYVAL pBOut AS DWORD _
) AS LONG
|
|
'///////////////////////////////////////////////////////////////////////////
'// File: d3dx9core.h
'// Content: D3DX core types and functions
'///////////////////////////////////////////////////////////////////////////
'///////////////////////////////////////////////////////////////////////////
'// D3DX_SDK_VERSION:
'// -----------------
'// This identifier is passed to D3DXCheckVersion in order to ensure that an
'// application was built against the correct header files and lib files.
'// This number is incremented whenever a header (or other) change would
'// require applications to be rebuilt. If the version doesn't match,
'// D3DXCreateVersion will return FALSE. (The number itself has no meaning.)
'///////////////////////////////////////////////////////////////////////////
DECLARE FUNCTION D3DXCheckVersion LIB "D3DX9.DLL" ALIAS "D3DXCheckVersion" (BYVAL D3DSdkVersion AS DWORD, BYVAL D3DXSdkVersion AS DWORD) AS LONG
'///////////////////////////////////////////////////////////////////////////
'// D3DXGetDriverLevel:
'// Returns driver version information:
'//
'// 700 - DX7 level driver
'// 800 - DX8 level driver
'// 900 - DX9 level driver
'///////////////////////////////////////////////////////////////////////////
DECLARE FUNCTION D3DXGetDriverLevel LIB "D3DX9.DLL" ALIAS "D3DXGetDriverLevel" (BYVAL pDevice AS DWORD) AS DWORD
'//////////////////////////////////////////////////////////////////////////////
'// ID3DXSprite:
'// ------------
'// This object intends to provide an easy way to drawing sprites using D3D.
'//
'// Begin -
'// Prepares device for drawing sprites.
'//
'// Draw -
'// Draws a sprite. Before transformation, the sprite is the size of
'// SrcRect, with its top-left corner specified by Position. The color
'// and alpha channels are modulated by Color.
'//
'// Flush -
'// Forces all batched sprites to submitted to the device.
'//
'// End -
'// Restores device state to how it was when Begin was called.
'//
'// OnLostDevice, OnResetDevice -
'// Call OnLostDevice() on this object before calling Reset() on the
'// device, so that this object can release any stateblocks and video
'// memory resources. After Reset(), the call OnResetDevice().
'//////////////////////////////////////////////////////////////////////////////
DECLARE FUNCTION D3DXCreateSprite LIB "D3DX9.DLL" ALIAS "D3DXCreateSprite" (BYVAL pDevice AS DWORD, BYREF ppSprite AS DWORD) AS LONG
'//////////////////////////////////////////////////////////////////////////////
'// ID3DXFont:
'// ----------
'// Font objects contain the textures and resources needed to render a specific
'// font on a specific device.
'//
'// GetGlyphData -
'// Returns glyph cache data, for a given glyph.
'//
'// PreloadCharacters/PreloadGlyphs/PreloadText -
'// Preloads glyphs into the glyph cache textures.
'//
'// DrawText -
'// Draws formatted text on a D3D device. Some parameters are
'// surprisingly similar to those of GDI's DrawText function. See GDI
'// documentation for a detailed description of these parameters.
'// If pSprite is NULL, an internal sprite object will be used.
'//
'// OnLostDevice, OnResetDevice -
'// Call OnLostDevice() on this object before calling Reset() on the
'// device, so that this object can release any stateblocks and video
'// memory resources. After Reset(), the call OnResetDevice().
'//////////////////////////////////////////////////////////////////////////////
DECLARE FUNCTION D3DXCreateFontA LIB "D3DX9.DLL" ALIAS "D3DXCreateFontA" ( _
BYVAL pDevice AS DWORD, _
BYVAL nHeight AS LONG, _
BYVAL nWidth AS DWORD, _
BYVAL nWeight AS DWORD, _
BYVAL MipLevels AS DWORD, _
BYVAL Italic AS LONG, _
BYVAL CharSet AS DWORD, _
BYVAL OutputPrecision AS DWORD, _
BYVAL QUALITY AS DWORD, _
BYVAL PitchAndFamily AS DWORD, _
BYVAL pFaceName AS DWORD, _
BYREF ppFont AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXCreateFontW LIB "D3DX9.DLL" ALIAS "D3DXCreateFontW" ( _
BYVAL pDevice AS DWORD, _
BYVAL nHeight AS LONG, _
BYVAL nWidth AS DWORD, _
BYVAL nWeight AS DWORD, _
BYVAL MipLevels AS DWORD, _
BYVAL Italic AS LONG, _
BYVAL CharSet AS DWORD, _
BYVAL OutputPrecision AS DWORD, _
BYVAL QUALITY AS DWORD, _
BYVAL PitchAndFamily AS DWORD, _
BYVAL pFaceName AS DWORD, _
BYREF ppFont AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXCreateFontIndirectA LIB "D3DX9.DLL" ALIAS "D3DXCreateFontIndirectA" ( _
BYVAL pDevice AS DWORD, _
BYREF pDesc AS D3DXFONT_DESCA, _
BYREF ppFont AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXCreateFontIndirectW LIB "D3DX9.DLL" ALIAS "D3DXCreateFontIndirectW" ( _
BYVAL pDevice AS DWORD, _
BYREF pDesc AS D3DXFONT_DESCW, _
BYREF ppFont AS DWORD _
) AS LONG
'///////////////////////////////////////////////////////////////////////////
'// ID3DXRenderToSurface:
'// ---------------------
'// This object abstracts rendering to surfaces. These surfaces do not
'// necessarily need to be render targets. If they are not, a compatible
'// render target is used, and the result copied into surface at end scene.
'//
'// BeginScene, EndScene -
'// Call BeginScene() and EndScene() at the beginning and ending of your
'// scene. These calls will setup and restore render targets, viewports,
'// etc..
'//
'// OnLostDevice, OnResetDevice -
'// Call OnLostDevice() on this object before calling Reset() on the
'// device, so that this object can release any stateblocks and video
'// memory resources. After Reset(), the call OnResetDevice().
'///////////////////////////////////////////////////////////////////////////
DECLARE FUNCTION D3DXCreateRenderToSurface LIB "D3DX9.DLL" ALIAS "D3DXCreateRenderToSurface" ( _
BYVAL pDevice AS DWORD, _
BYVAL nWidth AS DWORD, _
BYVAL nHeight AS DWORD, _
BYVAL nFormat AS DWORD, _
BYVAL DepthStencil AS LONG, _
BYVAL DepthStencilFormat AS DWORD, _
BYREF ppRenderToSurface AS DWORD _
) AS LONG
'///////////////////////////////////////////////////////////////////////////
'// ID3DXRenderToEnvMap:
'// --------------------
'// This object abstracts rendering to environment maps. These surfaces
'// do not necessarily need to be render targets. If they are not, a
'// compatible render target is used, and the result copied into the
'// environment map at end scene.
'//
'// BeginCube, BeginSphere, BeginHemisphere, BeginParabolic -
'// This function initiates the rendering of the environment map. As
'// parameters, you pass the textures in which will get filled in with
'// the resulting environment map.
'//
'// Face -
'// Call this function to initiate the drawing of each face. For each
'// environment map, you will call this six times.. once for each face
'// in D3DCUBEMAP_FACES.
'//
'// End -
'// This will restore all render targets, and if needed compose all the
'// rendered faces into the environment map surfaces.
'//
'// OnLostDevice, OnResetDevice -
'// Call OnLostDevice() on this object before calling Reset() on the
'// device, so that this object can release any stateblocks and video
'// memory resources. After Reset(), the call OnResetDevice().
'///////////////////////////////////////////////////////////////////////////
DECLARE FUNCTION D3DXCreateRenderToEnvMap LIB "D3DX9.DLL" ALIAS "D3DXCreateRenderToEnvMap" ( _
BYVAL pDevice AS DWORD, _
BYVAL nSize AS DWORD, _
BYVAL MipLevels AS DWORD, _
BYVAL nFormat AS DWORD, _
BYVAL DepthStencil AS LONG, _
BYVAL DepthStencilFormat AS DWORD, _
BYREF ppRenderToEnvMap AS DWORD _
) AS LONG
'///////////////////////////////////////////////////////////////////////////
'// ID3DXLine:
'// ------------
'// This object intends to provide an easy way to draw lines using D3D.
'//
'// Begin -
'// Prepares device for drawing lines
'//
'// Draw -
'// Draws a line strip in screen-space.
'// Input is in the form of a array defining points on the line strip. of D3DXVECTOR2
'//
'// DrawTransform -
'// Draws a line in screen-space with a specified input transformation matrix.
'//
'// End -
'// Restores device state to how it was when Begin was called.
'//
'// SetPattern -
'// Applies a stipple pattern to the line. Input is one 32-bit
'// DWORD which describes the stipple pattern. 1 is opaque, 0 is
'// transparent.
'//
'// SetPatternScale -
'// Stretches the stipple pattern in the u direction. Input is one
'// floating-point value. 0.0f is no scaling, whereas 1.0f doubles
'// the length of the stipple pattern.
'//
'// SetWidth -
'// Specifies the thickness of the line in the v direction. Input is
'// one floating-point value.
'//
'// SetAntialias -
'// Toggles line antialiasing. Input is a BOOL.
'// TRUE = Antialiasing on.
'// FALSE = Antialiasing off.
'//
'// SetGLLines -
'// Toggles non-antialiased OpenGL line emulation. Input is a BOOL.
'// TRUE = OpenGL line emulation on.
'// FALSE = OpenGL line emulation off.
'//
'// OpenGL line: Regular line:
'// *\ *\
'// | \ / \
'// | \ *\ \
'// *\ \ \ \
'// \ \ \ \
'// \ * \ *
'// \ | \ /
'// \| *
'// *
'//
'// OnLostDevice, OnResetDevice -
'// Call OnLostDevice() on this object before calling Reset() on the
'// device, so that this object can release any stateblocks and video
'// memory resources. After Reset(), the call OnResetDevice().
'///////////////////////////////////////////////////////////////////////////
DECLARE FUNCTION D3DXCreateLine LIB "D3DX9.DLL" ALIAS "D3DXCreateLine" ( _
BYVAL pDevice AS DWORD, _
BYREF ppLine AS DWORD _
) AS LONG
' D3DX mesh types and functions
DECLARE FUNCTION D3DXCreateMesh LIB "D3DX9.DLL" ALIAS "D3DXCreateMesh" ( _
BYVAL NumFaces AS DWORD, _
BYVAL NumVertices AS DWORD, _
BYVAL Options AS DWORD, _
BYREF pDeclaration AS D3DVERTEXELEMENT9, _
BYVAL pD3DDevice AS DWORD, _
BYREF ppMesh AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXCreateMeshFVF LIB "D3DX9.DLL" ALIAS "D3DXCreateMeshFVF" ( _
BYVAL NumFaces AS DWORD, _
BYVAL NumVertices AS DWORD, _
BYVAL Options AS DWORD, _
BYREF FVF AS DWORD, _
BYVAL pD3DDevice AS DWORD, _
BYREF ppMesh AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXCreateSPMesh LIB "D3DX9.DLL" ALIAS "D3DXCreateSPMesh" ( _
BYVAL pMesh AS DWORD, _
BYVAL pAdjacency AS DWORD, _
BYVAL pVertexAttributeWeights AS DWORD, _
BYREF pVertexWeights AS DWORD _
) AS LONG
'// clean a mesh up for simplification, try to make manifold
DECLARE FUNCTION D3DXCleanMesh LIB "D3DX9.DLL" ALIAS "D3DXCleanMesh" ( _
BYVAL CleanType AS DWORD, _
BYVAL pMeshIn AS DWORD, _
BYVAL pAdjacencyIn AS DWORD, _
BYREF ppMeshOut AS DWORD, _
BYREF pAdjacencyOut AS DWORD, _
BYREF ppErrorsAndWarnings AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXValidMesh LIB "D3DX9.DLL" ALIAS "D3DXValidMesh" ( _
BYVAL pMeshIn AS DWORD, _
BYVAL pAdjacency AS DWORD, _
BYREF ppErrorsAndWarnings AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXGeneratePMesh LIB "D3DX9.DLL" ALIAS "D3DXGeneratePMesh" ( _
BYVAL pMesh AS DWORD, _
BYVAL pAdjacency AS DWORD, _
BYVAL pVertexAttributeWeights AS DWORD, _
BYVAL pVertexWeights AS DWORD, _
BYVAL MinValue AS DWORD, _
BYVAL Options AS DWORD, _
BYREF ppPMesh AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXSimplifyMesh LIB "D3DX9.DLL" ALIAS "D3DXSimplifyMesh" ( _
BYVAL pMesh AS DWORD, _
BYVAL pAdjacency AS DWORD, _
BYVAL pVertexAttributeWeights AS DWORD, _
BYVAL pVertexWeights AS DWORD, _
BYVAL MinValue AS DWORD, _
BYVAL Options AS DWORD, _
BYREF ppPMesh AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXComputeBoundingSphere LIB "D3DX9.DLL" ALIAS "D3DXComputeBoundingSphere" ( _
BYREF pFirstPosition AS D3DXVECTOR3, _ ' // pointer to first position
BYVAL NumVertices AS DWORD, _
BYVAL dwStride AS DWORD, _ ' // count in bytes to subsequent position vectors
BYREF pCenter AS D3DXVECTOR3, _
BYREF pRadius AS SINGLE _
) AS LONG
DECLARE FUNCTION D3DXComputeBoundingBox LIB "D3DX9.DLL" ALIAS "D3DXComputeBoundingBox" ( _
BYREF pFirstPosition AS D3DXVECTOR3, _ ' // pointer to first position
BYVAL NumVertices AS DWORD, _
BYVAL dwStride AS DWORD, _ ' // count in bytes to subsequent position vectors
BYREF pMin AS D3DXVECTOR3, _
BYREF pMax AS D3DXVECTOR3 _
) AS LONG
DECLARE FUNCTION D3DXComputeNormals LIB "D3DX9.DLL" ALIAS "D3DXComputeNormals" ( _
BYVAL pMesh AS DWORD, _
BYVAL pAdjacency AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXCreateBuffer LIB "D3DX9.DLL" ALIAS "D3DXCreateBuffer" ( _
BYVAL NumBytes AS DWORD, _
BYREF ppBuffer AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXLoadMeshFromXA LIB "D3DX9.DLL" ALIAS "D3DXLoadMeshFromXA" ( _
BYREF pFilename AS ASCIIZ, _
BYVAL Options AS DWORD, _
BYVAL pD3DDevice AS DWORD, _
BYREF ppAdjacency AS DWORD, _
BYREF ppMaterials AS DWORD, _
BYREF ppEffectInstances AS DWORD, _
BYREF pNumMaterials AS DWORD, _
BYREF ppMesh AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXLoadMeshFromXW LIB "D3DX9.DLL" ALIAS "D3DXLoadMeshFromXW" ( _
BYVAL pFilename AS DWORD, _
BYVAL Options AS DWORD, _
BYVAL pD3DDevice AS DWORD, _
BYREF ppAdjacency AS DWORD, _
BYREF ppMaterials AS DWORD, _
BYREF ppEffectInstances AS DWORD, _
BYREF pNumMaterials AS DWORD, _
BYREF ppMesh AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXLoadMeshFromXInMemory LIB "D3DX9.DLL" ALIAS "D3DXLoadMeshFromXInMemory" ( _
BYVAL Memory AS DWORD, _
BYVAL SizeOfMemory AS DWORD, _
BYVAL Options AS DWORD, _
BYVAL pD3DDevice AS DWORD,_
BYREF ppAdjacency AS DWORD, _
BYREF ppMaterials AS DWORD, _
BYREF ppEffectInstances AS DWORD, _
BYREF pNumMaterials AS DWORD, _
BYREF ppMesh AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXLoadMeshFromXResource LIB "D3DX9.DLL" ALIAS "D3DXLoadMeshFromXResource" ( _
BYVAL Module AS DWORD, _
BYREF szName AS ASCIIZ, _
BYREF szType AS ASCIIZ, _
BYVAL Options AS DWORD, _
BYVAL pD3DDevice AS DWORD, _
BYREF ppAdjacency AS DWORD, _
BYREF ppMaterials AS DWORD, _
BYREF ppEffectInstances AS DWORD, _
BYREF pNumMaterials AS DWORD, _
BYREF ppMesh AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXSaveMeshToXA LIB "D3DX9.DLL" ALIAS "D3DXSaveMeshToXA" ( _
BYREF pFilename AS ASCIIZ, _
BYVAL pMesh AS DWORD, _
BYVAL pAdjacency AS DWORD, _
BYVAL pMaterials AS DWORD, _
BYVAL pEffectInstances AS DWORD, _
BYVAL NumMaterials AS DWORD, _
BYVAL prmFormat AS DWORD _
) AS LONG
DECLARE FUNCTION D3DXSaveMeshToXW LIB "D3DX9.DLL" ALIAS "D3DXSaveMeshToXW" ( _
BYVAL pFilename AS DWORD, _
BYVAL pMesh AS DWORD, _
BYVAL pAdjacency AS DWORD, _
BYVAL pMaterials AS DWORD, _
BYVAL pEffectInstances AS DWORD, _
BYVAL NumMaterials AS DWORD, _
BYVAL prmFormat AS DWORD _
) AS DWORD
DECLARE FUNCTION D3DXCreatePMeshFromStream LIB "D3DX9.DLL" ALIAS "D3DXCreatePMeshFromStream" ( _
BYVAL pStream AS DWORD, _
BYVAL Options AS DWORD, _
BYVAL pD3DDevice AS DWORD, _
BYREF ppMaterials AS DWORD, _
BYREF ppEffectInstances AS DWORD, _
BYREF pNumMaterials AS DWORD, _
BYREF ppPMesh AS DWORD _
) AS LONG
'// Creates a skin info object based on the number of vertices, number of bones, and a declaration describing the vertex layout of the target vertices
'// The bone names and initial bone transforms are not filled in the skin info object by this method.
DECLARE FUNCTION D3DXCreateSkinInfo LIB "D3DX9.DLL" ALIAS "D3DXCreateSkinInfo" ( _
BYVAL NumVertices AS DWORD, _
BYVAL pDeclaration AS DWORD, _
BYVAL NumBones AS DWORD, _
BYREF ppSkinInfo AS DWORD _
) AS LONG
'// Creates a skin info object based on the number of vertices, number of bones, and a FVF describing the vertex layout of the target vertices
'// The bone names and initial bone transforms are not filled in the skin info object by this method.
DECLARE FUNCTION D3DXCreateSkinInfoFVF LIB "D3DX9.DLL" ALIAS "D3DXCreateSkinInfoFVF" ( _
BYVAL NumVertices AS DWORD, _
BYVAL FVF AS DWORD, _
|