|
|
|
ID3DXMesh Interface |
|
' ****************************************************************************************
' ID3DXMesh interface
' $IID_ID3DXMesh = GUID$("{4020E5C2-1403-4929-883F-E2E849FAC195}")
' ****************************************************************************************
' ****************************************************************************************
' Applications use the methods of the ID3DXPMesh interface to manipulate progressive mesh
' objects. A progressive mesh enables progressive refinement of the mesh object.
' Remarks
' To obtain the ID3DXPMesh interface, call the D3DXGeneratePMesh function. Or, create a
' progressive mesh with D3DXCreatePMeshFromStream.
' This interface inherits additional functionality from the ID3DXBaseMesh interface.
' Interface Information
' Stock Implementation d3d9.dll
' Custom Implementation No
' Inherits from ID3DXBaseMesh
' Header d3dx9mesh.h
' Import library d3dx9.lib
' Minimum operating systems Windows 98
' ****************************************************************************************
' ****************************************************************************************
'DECLARE_INTERFACE_(ID3DXMesh, ID3DXBaseMesh)
'{
' // IUnknown
' 0. STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
' 1. STDMETHOD_(ULONG, AddRef)(THIS) PURE;
' 2. STDMETHOD_(ULONG, Release)(THIS) PURE;
' // ID3DXBaseMesh
' 3. STDMETHOD(DrawSubset)(THIS_ DWORD AttribId) PURE;
' 4. STDMETHOD_(DWORD, GetNumFaces)(THIS) PURE;
' 5. STDMETHOD_(DWORD, GetNumVertices)(THIS) PURE;
' 6. STDMETHOD_(DWORD, GetFVF)(THIS) PURE;
' 7. STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE]) PURE;
' 8. STDMETHOD_(DWORD, GetNumBytesPerVertex)(THIS) PURE;
' 9. STDMETHOD_(DWORD, GetOptions)(THIS) PURE;
' 10. STDMETHOD(GetDevice)(THIS_ LPDIRECT3DDEVICE9* ppDevice) PURE;
' 11. STDMETHOD(CloneMeshFVF)(THIS_ DWORD Options,
' DWORD FVF, LPDIRECT3DDEVICE9 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
' 12. STDMETHOD(CloneMesh)(THIS_ DWORD Options,
' CONST D3DVERTEXELEMENT9 *pDeclaration, LPDIRECT3DDEVICE9 pD3DDevice, LPD3DXMESH* ppCloneMesh) PURE;
' 13. STDMETHOD(GetVertexBuffer)(THIS_ LPDIRECT3DVERTEXBUFFER9* ppVB) PURE;
' 14. STDMETHOD(GetIndexBuffer)(THIS_ LPDIRECT3DINDEXBUFFER9* ppIB) PURE;
' 15. STDMETHOD(LockVertexBuffer)(THIS_ DWORD Flags, LPVOID *ppData) PURE;
' 16. STDMETHOD(UnlockVertexBuffer)(THIS) PURE;
' 17. STDMETHOD(LockIndexBuffer)(THIS_ DWORD Flags, LPVOID *ppData) PURE;
' 18. STDMETHOD(UnlockIndexBuffer)(THIS) PURE;
' 19. STDMETHOD(GetAttributeTable)(
' THIS_ D3DXATTRIBUTERANGE *pAttribTable, DWORD* pAttribTableSize) PURE;
' 20. STDMETHOD(ConvertPointRepsToAdjacency)(THIS_ CONST DWORD* pPRep, DWORD* pAdjacency) PURE;
' 21. STDMETHOD(ConvertAdjacencyToPointReps)(THIS_ CONST DWORD* pAdjacency, DWORD* pPRep) PURE;
' 22. STDMETHOD(GenerateAdjacency)(THIS_ FLOAT Epsilon, DWORD* pAdjacency) PURE;
' 23. STDMETHOD(UpdateSemantics)(THIS_ D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE]) PURE;
' // ID3DXMesh
' 24. STDMETHOD(LockAttributeBuffer)(THIS_ DWORD Flags, DWORD** ppData) PURE;
' 25. STDMETHOD(UnlockAttributeBuffer)(THIS) PURE;
' 26. STDMETHOD(Optimize)(THIS_ DWORD Flags, CONST DWORD* pAdjacencyIn, DWORD* pAdjacencyOut,
' DWORD* pFaceRemap, LPD3DXBUFFER *ppVertexRemap,
' LPD3DXMESH* ppOptMesh) PURE;
' 27. STDMETHOD(OptimizeInplace)(THIS_ DWORD Flags, CONST DWORD* pAdjacencyIn, DWORD* pAdjacencyOut,
' DWORD* pFaceRemap, LPD3DXBUFFER *ppVertexRemap) PURE;
' 28. STDMETHOD(SetAttributeTable)(THIS_ CONST D3DXATTRIBUTERANGE *pAttribTable, DWORD cAttribTableSize) PURE;
'};
' ****************************************************************************************
' ****************************************************************************************
' LockAttributeBuffer method
' Locks the mesh buffer that contains the mesh attribute data, and returns a pointer to it.
' HRESULT LockAttributeBuffer(
' DWORD Flags,
' DWORD ** ppData
' );
' ****************************************************************************************
FUNCTION ID3DXMesh_LockAttributeBuffer ALIAS "ID3DXMesh_LockAttributeBuffer" ( _
BYVAL pthis AS DWORD PTR, BYVAL Flags AS DWORD, BYREF ppData AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[24] USING ID3DXMesh_LockAttributeBuffer(pthis, Flags, ppData) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' UnlockAttributeBuffer method
' Unlocks an attribute buffer.
' HRESULT UnlockAttributeBuffer();
' ****************************************************************************************
FUNCTION ID3DXMesh_UnlockAttributeBuffer ALIAS "ID3DXMesh_UnlockAttributeBuffer" (BYVAL pthis AS DWORD PTR) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[25] USING ID3DXMesh_UnlockAttributeBuffer(pthis) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' Optimize method
' Generate a new mesh with reordered faces and vertices to optimize drawing performance.
' HRESULT Optimize(
' DWORD Flags,
' CONST DWORD * pAdjacencyIn,
' DWORD * pAdjacencyOut,
' DWORD * pFaceRemap,
' LPD3DXBUFFER * ppVertexRemap,
' LPD3DXMESH * ppOptMesh
' );
' ****************************************************************************************
FUNCTION ID3DXMesh_Optimize ALIAS "ID3DXMesh_Optimize" ( _
BYVAL pthis AS DWORD PTR, BYVAL Flags AS DWORD, BYVAL pAdjacencyIn AS DWORD, _
BYREF pAdjacencyOut AS DWORD, BYVAL pFaceRemap AS DWORD, BYREF ppVertexRemap AS DWORD, _
BYREF ppOptMesh AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[26] USING ID3DXMesh_Optimize(pthis, Flags, pAdjacencyIn, pAdjacencyOut, pFaceRemap, ppVertexRemap, ppOptMesh) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' OptimizeInPlace method
' Generate a mesh with reordered faces and vertices to optimize drawing performance. This
' method reorders the existing mesh.
' HRESULT OptimizeInplace(
' DWORD Flags,
' CONST DWORD * pAdjacencyIn,
' DWORD * pAdjacencyOut,
' DWORD * pFaceRemap,
' LPD3DXBUFFER * ppVertexRemap
' );
' ****************************************************************************************
FUNCTION ID3DXMesh_OptimizeInPlace ALIAS "ID3DXMesh_OptimizeInPlace" ( _
BYVAL pthis AS DWORD PTR, BYVAL Flags AS DWORD, BYVAL pAdjacencyIn AS DWORD, _
BYREF pAdjacencyOut AS DWORD, BYVAL pFaceRemap AS DWORD, BYREF ppVertexRemap AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[27] USING ID3DXMesh_OptimizeInPlace(pthis, Flags, pAdjacencyIn, pAdjacencyOut, pFaceRemap, ppVertexRemap) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
' ****************************************************************************************
' SetAttributeTable method
' Sets the attribute table for a mesh and the number of entries stored in the table.
' HRESULT SetAttributeTable(
' CONST D3DXATTRIBUTERANGE * pAttribTable,
' DWORD cAttribTableSize
' );
' ****************************************************************************************
FUNCTION ID3DXMesh_SetAttributeTable ALIAS "ID3DXMesh_SetAttributeTable" ( _
BYVAL pthis AS DWORD PTR, BYVAL pAttribTable AS DWORD, BYVAL cAttribTableSize AS DWORD) EXPORT AS LONG
LOCAL HRESULT AS LONG
IF pthis = %NULL THEN FUNCTION = %E_POINTER : EXIT FUNCTION
CALL DWORD @@pthis[28] USING ID3DXMesh_SetAttributeTable(pthis, pAttribTable, cAttribTableSize) TO HRESULT
FUNCTION = HRESULT
END FUNCTION
' ****************************************************************************************
|
Page last updated on Tuesday, 14 March 2006 23:07:14 +0100