d3dfile.h
上传用户:fengshi120
上传日期:2014-07-17
资源大小:6155k
文件大小:4k
源码类别:

3D图形编程

开发平台:

C/C++

  1. //-----------------------------------------------------------------------------
  2. // File: D3DFile.h
  3. //
  4. // Desc: Support code for loading DirectX .X files.
  5. //-----------------------------------------------------------------------------
  6. #ifndef D3DFILE_H
  7. #define D3DFILE_H
  8. #include <tchar.h>
  9. #include <d3d9.h>
  10. #include <d3dx9.h>
  11. #include <dxFile.h>
  12. //-----------------------------------------------------------------------------
  13. // Name: class CD3DMesh
  14. // Desc: Class for loading and rendering file-based meshes
  15. //-----------------------------------------------------------------------------
  16. class CD3DMesh
  17. {
  18. public:
  19.     TCHAR               m_strName[512];
  20.     LPD3DXMESH          m_pSysMemMesh;    // SysMem mesh, lives through resize
  21.     LPD3DXMESH          m_pLocalMesh;     // Local mesh, rebuilt on resize
  22.     
  23.     DWORD               m_dwNumMaterials; // Materials for the mesh
  24.     D3DMATERIAL9*       m_pMaterials;
  25.     LPDIRECT3DTEXTURE9* m_pTextures;
  26.     bool                m_bUseMaterials;
  27. public:
  28.     // Rendering
  29.     HRESULT Render( LPDIRECT3DDEVICE9 pd3dDevice, 
  30.                     bool bDrawOpaqueSubsets = true,
  31.                     bool bDrawAlphaSubsets = true,
  32. int iSelectedSubset = -1);
  33.     // Mesh access
  34.     LPD3DXMESH GetSysMemMesh() { return m_pSysMemMesh; }
  35.     LPD3DXMESH GetLocalMesh()  { return m_pLocalMesh; }
  36.     // Rendering options
  37.     void    UseMeshMaterials( bool bFlag ) { m_bUseMaterials = bFlag; }
  38.     HRESULT SetFVF( LPDIRECT3DDEVICE9 pd3dDevice, DWORD dwFVF );
  39.     // Initializing
  40.     HRESULT RestoreDeviceObjects( LPDIRECT3DDEVICE9 pd3dDevice );
  41.     HRESULT InvalidateDeviceObjects();
  42.     // Creation/destruction
  43.     HRESULT Create( LPDIRECT3DDEVICE9 pd3dDevice, TCHAR* strFilename,float fAlpha );
  44.  //   HRESULT Create( LPDIRECT3DDEVICE9 pd3dDevice, LPD3DXFILEDATA pFileData );
  45.     HRESULT Destroy();
  46.     CD3DMesh( TCHAR* strName = _T("CD3DFile_Mesh") );
  47.     virtual ~CD3DMesh();
  48. };
  49. /*
  50. //-----------------------------------------------------------------------------
  51. // Name: class CD3DFrame
  52. // Desc: Class for loading and rendering file-based meshes
  53. //-----------------------------------------------------------------------------
  54. class CD3DFrame
  55. {
  56. public:
  57.     TCHAR      m_strName[512];
  58.     D3DXMATRIX m_mat;
  59.     CD3DMesh*  m_pMesh;
  60. //    CD3DFrame* m_pNext;
  61.   //  CD3DFrame* m_pChild;
  62. public:
  63.     // Matrix access
  64.     void        SetMatrix( D3DXMATRIX* pmat ) { m_mat = *pmat; }
  65.     D3DXMATRIX* GetMatrix()                   { return &m_mat; }
  66. //    CD3DMesh*   FindMesh( TCHAR* strMeshName );
  67. //    CD3DFrame*  FindFrame( TCHAR* strFrameName );
  68. //    bool        EnumMeshes( bool (*EnumMeshCB)(CD3DMesh*,void*), 
  69.  //                          void* pContext );
  70.     HRESULT Destroy();
  71.     HRESULT RestoreDeviceObjects( LPDIRECT3DDEVICE9 pd3dDevice );
  72.     HRESULT InvalidateDeviceObjects();
  73.     HRESULT Render( LPDIRECT3DDEVICE9 pd3dDevice, 
  74.                     bool bDrawOpaqueSubsets = true,
  75.                     bool bDrawAlphaSubsets = true,
  76.                     D3DXMATRIX* pmatWorldMartix = NULL);
  77.     
  78.    // CD3DFrame( TCHAR* strName = _T("CD3DFile_Frame") );
  79.  //   virtual ~CD3DFrame();
  80. };
  81. //-----------------------------------------------------------------------------
  82. // Name: class CD3DFile
  83. // Desc: Class for loading and rendering file-based meshes
  84. //-----------------------------------------------------------------------------
  85. class CD3DFile : public CD3DFrame
  86. {
  87.     HRESULT LoadMesh( LPDIRECT3DDEVICE9 pd3dDevice, LPD3DXFILEDATA pFileData, 
  88.                       CD3DFrame* pParentFrame );
  89.     HRESULT LoadFrame( LPDIRECT3DDEVICE9 pd3dDevice, LPD3DXFILEDATA pFileData, 
  90.                        CD3DFrame* pParentFrame );
  91. public:
  92.     HRESULT Create( LPDIRECT3DDEVICE9 pd3dDevice, TCHAR* strFilename );
  93.     HRESULT CreateFromResource( LPDIRECT3DDEVICE9 pd3dDevice, TCHAR* strResource, TCHAR* strType );
  94.     // For pure devices, specify the world transform. If the world transform is not
  95.     // specified on pure devices, this function will fail.
  96.     HRESULT Render( LPDIRECT3DDEVICE9 pd3dDevice, D3DXMATRIX* pmatWorldMatrix = NULL );
  97.     CD3DFile() : CD3DFrame( _T("CD3DFile_Root") ) {}
  98. };
  99. */
  100. #endif