plane.h
上传用户:junlon
上传日期:2022-01-05
资源大小:39075k
文件大小:2k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. //--------------------------------------------------------------------------------------
  2. // 文件: plane.h
  3. //
  4. // 封装了平面类,该平面由 m_iWidthSampleNum,m_iHeightSampleNum 个顶点组成,两个对角顶点分别为
  5. //
  6. // m_leftBottomPt和m_rightUpPt, 该平面与水平面平行,所以输入的两个顶点必须高度一致,否则报错
  7. //
  8. // 版权归子墨工作室所有
  9. //--------------------------------------------------------------------------------------
  10. #ifndef __PLANE__H__INCLUDED__
  11. #define __PLANE__H__INCLUDED__
  12. //#define PLANEWIDTH  4.0f
  13. //#define PLANEHEIGHT 4.0f
  14. class CPlane
  15. {
  16. public:
  17. CPlane( WORD widthSampleNum,    //widthSampleNum - 1 等于平面在X轴上的分段数
  18. WORD heightSampleNum,       //heightSampleNum - 1等于平面在Y轴上的分段数
  19. D3DXVECTOR3 leftBottomPt,   //平面的左下角顶点
  20. D3DXVECTOR3 rightUpPt );    //平面的右上角顶点
  21. ~CPlane();
  22. protected:
  23. LPDIRECT3DVERTEXBUFFER9 m_pVB;
  24.     LPDIRECT3DINDEXBUFFER9 m_pIB;
  25. LPDIRECT3DTEXTURE9 m_pTexture;
  26. // 现假设平面与XOZ平面平行,所以 m_leftBottomPt.y == m_rightUpPt.y
  27. D3DXVECTOR3 m_leftBottomPt, m_rightUpPt;
  28. WORD m_iWidthSampleNum;
  29. WORD m_iHeightSampleNum;
  30. public:
  31. HRESULT OnCreateDevice( IDirect3DDevice9* pd3dDevice );
  32. void OnDestroyDevice();
  33. void OnRender( IDirect3DDevice9* pd3dDevice );
  34. };
  35. typedef struct tagPLANEVERTEX{
  36. D3DXVECTOR3 position; // The position of the vertex.
  37. D3DXVECTOR3 normal;   // The nomal Vector.
  38. D3DCOLOR    color;    // The color
  39. FLOAT       tu, tv;   // The texture coordinates
  40. // static const DWORD FVF;
  41. }PLANEVERTEX;
  42. #define D3D_PLANEVT_FVF D3DFVF_XYZ|D3DFVF_NORMAL|D3DFVF_DIFFUSE|D3DFVF_TEX1
  43. #endif //__PLANE__H__INCLUDED__