TerrainMesh.h
上传用户:sycq158
上传日期:2008-10-22
资源大小:15361k
文件大小:3k
源码类别:

游戏

开发平台:

Visual C++

  1. //----------------------------------------------------------------------------
  2. // File: TerrainMesh.h
  3. //
  4. // Desc: Class that owns d3d mesh and the heightmap that created it
  5. //
  6. // Copyright (C) Microsoft Corporation. All Rights Reserved.
  7. //-----------------------------------------------------------------------------
  8. #pragma once
  9. #include "HeightMap.h"
  10. struct TERRIANVERTEX
  11. {
  12.     D3DXVECTOR3 p;
  13.     D3DXVECTOR3 n;
  14.     FLOAT       tu, tv;
  15. };
  16. struct RHW_VERTEX
  17. {
  18.     D3DXVECTOR4 p;
  19.     FLOAT       tu1, tv1;
  20.     FLOAT       tu2, tv2;
  21. };
  22. #define TERRIAN_FVF         (D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_TEX1)
  23. #define RHW_FVF             (D3DFVF_XYZRHW|D3DFVF_TEX2)
  24. class CTerrainEngine;
  25. class CTerrainMesh  
  26. {
  27. public:
  28.     CTerrainMesh( CTerrainEngine* pTerrainEngine );
  29.     virtual ~CTerrainMesh();
  30.     HRESULT OneTimeSceneInit( CZoneStyleParameter* pLandStyle, const float fWorldOffsetX, const float fWorldOffsetZ, CTerrainMesh* pNorth, CTerrainMesh* pEast, CTerrainMesh* pNorthEast );
  31.     HRESULT InitDeviceObjects( D3DFORMAT fmtTexture );
  32.     HRESULT RestoreDeviceObjects( HWND hWndMain );
  33.     HRESULT FrameMove( const float fElapsedTime );
  34.     HRESULT RenderFrame( const float fWrapOffsetX, const float fWrapOffsetZ, DWORD* pdwNumVerts );
  35.     HRESULT InvalidateDeviceObjects();
  36.     HRESULT DeleteDeviceObjects();
  37.     VOID    FinalCleanup();
  38.     HRESULT SmoothMap() { return m_pMap->SmoothMap(); };
  39.     HRESULT FinalizeSmooth() { return m_pMap->FinalizeSmooth(); };
  40.     HRESULT CreateMeshFromHeightMap( int nWidth, int nHeight );
  41.     HRESULT ReadTextureFromFile( int nWidth, int nHeight );
  42.     HRESULT CreateTextureFromHeight( int nWidth, int nHeight );
  43.     FLOAT   TextureColorFactor( DWORD iTexture, float fValue );
  44.     HRESULT CreateTextureFromLayers( int nWidth, int nHeight );
  45.     BYTE    TextureAlpha( float fHeight, int nIndex );
  46.     HRESULT CreateTestTexture( int nWidth, int nHeight );
  47.     HRESULT CorrectTextureEdge();
  48.     HRESULT GenerateMipMaps();
  49.     inline FLOAT GetHeightWorld( float x, float z ) { return m_pMap->GetHeightObj( x-m_fWorldOffsetX, z-m_fWorldOffsetZ ); };
  50.     inline FLOAT GetHeightObj( float x, float z ) { return m_pMap->GetHeightObj( x, z ); };
  51.     inline BOOL  IsOutOfRangeWorld( float x, float z ) { return m_pMap->IsOutOfRangeObj( x-m_fWorldOffsetX, z-m_fWorldOffsetZ ); };
  52.     inline BOOL  IsOutOfRangeObj( float x, float z ) { return m_pMap->IsOutOfRangeObj( x, z ); };
  53.     DWORD GetTexelColor( DWORD iLevel, float x, float z );
  54.     HRESULT SaveMeshToXFile();
  55.     HRESULT SaveTextureToFile();
  56.     CZoneStyleParameter* m_pLandStyle;
  57.     CHeightMap*         m_pMap;
  58.     ID3DXMesh*          m_pMesh;
  59.     DWORD               m_dwNumFaces;
  60.     DWORD               m_dwNumVerties;
  61.     FLOAT               m_fWorldOffsetX;
  62.     FLOAT               m_fWorldOffsetZ;
  63.     D3DXMATRIX          m_matWorld;
  64.     CTerrainMesh*       m_pNorth;
  65.     CTerrainMesh*       m_pEast;
  66.     CTerrainMesh*       m_pNorthEast;
  67.     CTerrainEngine*     g_pTerrainEngine;
  68.     D3DFORMAT           m_fmtTexture;
  69.     LPDIRECT3DTEXTURE9  m_pTexture;       
  70. };