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