|
|
|
ID3DXSPMesh Interface |
|
' ****************************************************************************************
' ID3DXSPMesh interface
' $IID_ID3DXSPMesh = GUID$("{667EA4C7-F1CD-4386-B523-7C0290B83CC5}")
' ****************************************************************************************
' ****************************************************************************************
' Applications use the methods of the ID3DXSPMesh interface to manipulate simplification mesh
' objects. A simplification mesh is used to simplify a given mesh to a lower number of faces.
' ****************************************************************************************
' ****************************************************************************************
'DECLARE_INTERFACE_(ID3DXSPMesh, IUnknown)
'{
' // IUnknown
' 0. STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
' 1. STDMETHOD_(ULONG, AddRef)(THIS) PURE;
' 2. STDMETHOD_(ULONG, Release)(THIS) PURE;
' // ID3DXSPMesh
' 3. STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
' 4. STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
' 5. STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
' 6. STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE]) PURE;
' 7. STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
' 8. STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
' 9. STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
' DWORD FVF, LPDIRECT3DDEVICE9 pD3DDevice, DWORD *pAdjacencyOut, DWORD *pVertexRemapOut, LPD3DXMESH* ppCloneMesh) PURE;
' 10. STDMETHOD(CloneMesh)(THIS_ DWORD Options,
' CONST D3DVERTEXELEMENT9 *pDeclaration, LPDIRECT3DDEVICE9 pD3DDevice, DWORD *pAdjacencyOut, DWORD *pVertexRemapOut, LPD3DXMESH* ppCloneMesh) PURE;
' 11. STDMETHOD(ClonePMeshFVF)(THIS_ DWORD Options,
' DWORD FVF, LPDIRECT3DDEVICE9 pD3DDevice, DWORD *pVertexRemapOut, FLOAT *pErrorsByFace, LPD3DXPMESH* ppCloneMesh) PURE;
' 12. STDMETHOD(ClonePMesh)(THIS_ DWORD Options,
' CONST D3DVERTEXELEMENT9 *pDeclaration, LPDIRECT3DDEVICE9 pD3DDevice, DWORD *pVertexRemapOut, FLOAT *pErrorsbyFace, LPD3DXPMESH* ppCloneMesh) PURE;
' 13. STDMETHOD(ReduceFaces)(THIS_ DWORD Faces) PURE;
' 14. STDMETHOD(ReduceVertices)(THIS_ DWORD Vertices) PURE;
' 15. STDMETHOD_(DWORD, GetMaxFaces)(THIS) PURE;
' 16. STDMETHOD_(DWORD, GetMaxVertices)(THIS) PURE;
' 17. STDMETHOD(GetVertexAttributeWeights)(THIS_ LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights) PURE;
' 18. STDMETHOD(GetVertexWeights)(THIS_ FLOAT *pVertexWeights) PURE;
'};
' ****************************************************************************************
' ****************************************************************************************
' GetNumFaces method
' Retrieves the number of faces in the simplification mesh.
' DWORD GetNumFaces();
' ****************************************************************************************
FUNCTION ID3DXSPMesh_GetNumFaces ALIAS "ID3DXSPMesh_GetNumFaces" (BYVAL pthis AS DWORD PTR) EXPORT AS DWORD
LOCAL DWRESULT AS DWORD
IF pthis = %NULL THEN EXIT FUNCTION
CALL DWORD @@pthis[3] USING ID3DXSPMesh_GetNumFaces(pthis) TO DWRESULT
FUNCTION = DWRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' GetNumVertices method
' Retrieves the number of vertices in the simplification mesh.
' DWORD GetNumVertices();
' ****************************************************************************************
FUNCTION ID3DXSPMesh_GetNumVertices ALIAS "ID3DXSPMesh_GetNumVertices" (BYVAL pthis AS DWORD PTR) EXPORT AS DWORD
LOCAL DWRESULT AS DWORD
IF pthis = %NULL THEN EXIT FUNCTION
CALL DWORD @@pthis[4] USING ID3DXSPMesh_GetNumVertices(pthis) TO DWRESULT
FUNCTION = DWRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' GetFVF method
' Retrieves the flexible vertex format (FVF) of the vertices in the simplification mesh.
' DWORD GetFVF();
' ****************************************************************************************
FUNCTION ID3DXSPMesh_GetFVF ALIAS "ID3DXSPMesh_GetFVF" (BYVAL pthis AS DWORD PTR) EXPORT AS DWORD
LOCAL DWRESULT AS DWORD
IF pthis = %NULL THEN EXIT FUNCTION
CALL DWORD @@pthis[5] USING ID3DXSPMesh_GetFVF(pthis) TO DWRESULT
FUNCTION = DWRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' GetDeclaration method
' Retrieves a declaration describing the vertices in the mesh.
' HRESULT GetDeclaration(
' D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE]
' );
' ****************************************************************************************
FUNCTION ID3DXSPMesh_GetDeclaration ALIAS "ID3DXSPMesh_GetDeclaration" ( _
BYVAL pthis AS DWORD PTR, BYREF Declaration AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[6] USING ID3DXSPMesh_GetDeclaration(pthis, Declaration) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' GetOptions method
' Retrieves the mesh options enabled for this simplification mesh at creation time.
' DWORD GetOptions();
' ****************************************************************************************
FUNCTION ID3DXSPMesh_GetOptions ALIAS "ID3DXSPMesh_GetOptions" (BYVAL pthis AS DWORD PTR) EXPORT AS DWORD
LOCAL DWRESULT AS DWORD
IF pthis = %NULL THEN EXIT FUNCTION
CALL DWORD @@pthis[7] USING ID3DXSPMesh_GetOptions(pthis) TO DWRESULT
FUNCTION = DWRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' GetDevice method
' Retrieves the device associated with the mesh.
' Remarks
' Calling this method will increase the internal reference count on the IDirect3DDevice9
' interface. Be sure to call IUnknown::Release when you are done using this IDirect3DDevice9
' interface or you will have a memory leak.
' HRESULT GetDevice(
' LPDIRECT3DDEVICE9 * ppDevice
' );
' ****************************************************************************************
FUNCTION ID3DXSPMesh_GetDevice ALIAS "ID3DXSPMesh_GetDevice" ( _
BYVAL pthis AS DWORD PTR, BYREF ppDevice AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[8] USING ID3DXSPMesh_GetDevice(pthis, ppDevice) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' CloneMeshFVF method
' Clones a mesh using a flexible vertex format (FVF) code.
' HRESULT CloneMeshFVF(
' DWORD Options,
' DWORD FVF,
' LPDIRECT3DDEVICE9 pD3DDevice,
' DWORD * pAdjacencyOut,
' DWORD * pVertexRemapOut,
' LPD3DXMESH * ppCloneMesh
' );
' ****************************************************************************************
FUNCTION ID3DXSPMesh_CloneMeshFVF ALIAS "ID3DXSPMesh_CloneMeshFVF" ( _
BYVAL pthis AS DWORD PTR, BYVAL Options AS DWORD, BYVAL FVF AS DWORD, _
BYVAL pD3DDevice AS DWORD, BYVAL pAdjacencyOut AS DWORD, BYVAL pVertexRemapOut AS DWORD, _
BYREF ppCloneMesh AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[9] USING ID3DXSPMesh_CloneMeshFVF(pthis, Options, FVF, pD3DDevice, pAdjacencyOut, pVertexRemapOut, ppCloneMesh) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' CloneMesh method
' Clones a mesh using a declarator.
' HRESULT CloneMesh(
' DWORD Options,
' CONST D3DVERTEXELEMENT9 * pDeclaration,
' LPDIRECT3DDEVICE9 pDevice,
' DWORD * pAdjacencyOut,
' DWORD * pVertexRemapOut,
' LPD3DXMESH * ppCloneMesh
' );
' ****************************************************************************************
FUNCTION ID3DXSPMesh_CloneMesh ALIAS "ID3DXSPMesh_CloneMesh" ( _
BYVAL pthis AS DWORD PTR, BYVAL Options AS DWORD, BYVAL pDeclaration AS DWORD, _
BYVAL pDevice AS DWORD, BYVAL pAdjacencyOut AS DWORD, BYVAL pVertexRemapOut AS DWORD, _
BYREF ppCloneMesh AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[10] USING ID3DXSPMesh_CloneMesh(pthis, Options, pDeclaration, pDevice, pAdjacencyOut, pVertexRemapOut, ppCloneMesh) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' ClonePMeshFVF method
' Clones a progressive mesh using a flexible vertex format (FVF) code.
' HRESULT ClonePMeshFVF(
' DWORD Options,
' DWORD FVF,
' LPDIRECT3DDEVICE9 pD3DDevice,
' DWORD * pVertexRemapOut,
' FLOAT * pErrorsByFace,
' LPD3DXPMESH * ppCloneMesh
' );
' ****************************************************************************************
FUNCTION ID3DXSPMesh_ClonePMeshFVF ALIAS "ID3DXSPMesh_ClonePMeshFVF" ( _
BYVAL pthis AS DWORD PTR, BYVAL Options AS DWORD, BYVAL FVF AS DWORD, _
BYVAL pD3DDevice AS DWORD, BYVAL pVertexRemapOut AS DWORD, BYVAL pErrorsByFace AS DWORD, _
BYREF ppCloneMesh AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[11] USING ID3DXSPMesh_ClonePMeshFVF(pthis, Options, FVF, pD3DDevice, pVertexRemapOut, pErrorsByFace, ppCloneMesh) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' ClonePMesh method
' Clones a progressive mesh using a declarator.
' HRESULT ClonePMesh(
' DWORD Options,
' CONST D3DVERTEXELEMENT9 * pDeclaration,
' LPDIRECT3DDEVICE9 pD3DDevice,
' DWORD * pVertexRemapOut,
' FLOAT * pErrorsByFace,
' LPD3DXPMESH * ppCloneMesh
' );
' ****************************************************************************************
FUNCTION ID3DXSPMesh_ClonePMesh ALIAS "ID3DXSPMesh_ClonePMesh" ( _
BYVAL pthis AS DWORD PTR, BYVAL Options AS DWORD, BYVAL pDeclaration AS DWORD, _
BYVAL pD3DDevice AS DWORD, BYVAL pVertexRemapOut AS DWORD, BYVAL pErrorsByFace AS DWORD, _
BYREF ppCloneMesh AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[12] USING ID3DXSPMesh_ClonePMesh(pthis, Options, pDeclaration, pD3DDevice, pVertexRemapOut, pErrorsByFace, ppCloneMesh) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' ReduceFaces method
' Reduces the number of faces in a simplification mesh.
' HRESULT ReduceFaces(
' DWORD Faces
' );
' ****************************************************************************************
FUNCTION ID3DXSPMesh_ReduceFaces ALIAS "ID3DXSPMesh_ReduceFaces" ( _
BYVAL pthis AS DWORD PTR, BYVAL Faces AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[13] USING ID3DXSPMesh_ReduceFaces(pthis, Faces) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' ReduceVertices method
' Reduces the number of vertices in a simplification mesh.
' HRESULT ReduceVertices(
' DWORD Vertices
' );
' ****************************************************************************************
FUNCTION ID3DXSPMesh_ReduceVertices ALIAS "ID3DXSPMesh_ReduceVertices" ( _
BYVAL pthis AS DWORD PTR, BYVAL Faces AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[14] USING ID3DXSPMesh_ReduceVertices(pthis, Faces) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' GetMaxFaces method
' Retrieves the maximum number of faces that the simplification mesh supports.
' DWORD GetMaxFaces();
' ****************************************************************************************
FUNCTION ID3DXSPMesh_GetMaxFaces ALIAS "ID3DXSPMesh_GetMaxFaces" (BYVAL pthis AS DWORD PTR) EXPORT AS DWORD
LOCAL DWRESULT AS DWORD
IF pthis = %NULL THEN EXIT FUNCTION
CALL DWORD @@pthis[15] USING ID3DXSPMesh_GetMaxFaces(pthis) TO DWRESULT
FUNCTION = DWRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' GetMaxVertices method
' Retrieves the maximum number of vertices that the simplification mesh supports.
' DWORD GetMaxVertices();
' ****************************************************************************************
FUNCTION ID3DXSPMesh_GetMaxVertices ALIAS "ID3DXSPMesh_GetMaxVertices" (BYVAL pthis AS DWORD PTR) EXPORT AS DWORD
LOCAL DWRESULT AS DWORD
IF pthis = %NULL THEN EXIT FUNCTION
CALL DWORD @@pthis[16] USING ID3DXSPMesh_GetMaxVertices(pthis) TO DWRESULT
FUNCTION = DWRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' GetVertexAttributeWeights method
' Retrieves the per-vertex attribute weights used to create the ID3DXSPMesh object.
' HRESULT GetVertexAttributeWeights(
' LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights
' );
' ****************************************************************************************
FUNCTION ID3DXSPMesh_GetVertexAttributeWeights ALIAS "ID3DXSPMesh_GetVertexAttributeWeights" ( _
BYVAL pthis AS DWORD PTR, BYVAL pVertexAttributeWeights AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[17] USING ID3DXSPMesh_GetVertexAttributeWeights(pthis, pVertexAttributeWeights) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' GetVertexWeights method
' Retrieves the per-vertex weights used to create the ID3DXSPMesh object.
' HRESULT GetVertexWeights(
' FLOAT * pVertexWeights
' );
' ****************************************************************************************
FUNCTION ID3DXSPMesh_GetVertexWeights ALIAS "ID3DXSPMesh_GetVertexWeights" ( _
BYVAL pthis AS DWORD PTR, BYVAL pVertexWeights AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[18] USING ID3DXSPMesh_GetVertexWeights(pthis, pVertexWeights) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
|
Page last updated on Tuesday, 14 March 2006 23:13:24 +0100