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

DirextX编程

开发平台:

Visual C++

  1. //////////////////////////////////////////////////////////////////////////////////////////////////
  2. // 
  3. // File: d3dUtility.h
  4. // 
  5. // Author: Zeng fancy (C) All Rights Reserved
  6. //
  7. // System: Pentium M 1.73G, 256 DDR, ATI X700, Windows XP, MSVC++ 7.0 
  8. //
  9. // Desc: Provides some common d3d elements or functions.
  10. //          
  11. //////////////////////////////////////////////////////////////////////////////////////////////////
  12. #ifndef __d3dUtilityH__
  13. #define __d3dUtilityH__
  14. //namespace myd3d
  15. //{
  16. //
  17. // Cleanup
  18. //
  19. template<class T> void Release(T t)
  20. {
  21. if( t )
  22. {
  23. t->Release();
  24. t = 0;
  25. }
  26. }
  27. template<class T> void Delete(T t)
  28. {
  29. if( t )
  30. {
  31. delete t;
  32. t = 0;
  33. }
  34. }
  35. //
  36. // Colors
  37. //
  38. const D3DXCOLOR      WHITE( D3DCOLOR_XRGB(255, 255, 255) );
  39. const D3DXCOLOR      BLACK( D3DCOLOR_XRGB(  0,   0,   0) );
  40. const D3DXCOLOR        RED( D3DCOLOR_XRGB(255,   0,   0) );
  41. const D3DXCOLOR      GREEN( D3DCOLOR_XRGB(  0, 255,   0) );
  42. const D3DXCOLOR       BLUE( D3DCOLOR_XRGB(  0,   0, 255) );
  43. const D3DXCOLOR     YELLOW( D3DCOLOR_XRGB(255, 255,   0) );
  44. const D3DXCOLOR       CYAN( D3DCOLOR_XRGB(  0, 255, 255) );
  45. const D3DXCOLOR    MAGENTA( D3DCOLOR_XRGB(255,   0, 255) );
  46. //
  47. // d3d Object and Device, Windowed = TRUE, Stencil Format = D3DFORMAT_D24S8
  48. //
  49. bool Initd3dDevice( IDirect3D9* pD3D, IDirect3DDevice9** ppD3DDevice, HWND hWnd);
  50. //
  51. // Lights
  52. //
  53. D3DLIGHT9 InitDirectionalLight(D3DXVECTOR3* direction, D3DXCOLOR* color);
  54. D3DLIGHT9 InitPointLight(D3DXVECTOR3* position, D3DXCOLOR* color);
  55. D3DLIGHT9 InitSpotLight(D3DXVECTOR3* position, D3DXVECTOR3* direction, D3DXCOLOR* color);
  56. //
  57. // Materials
  58. //
  59. D3DMATERIAL9 InitMtrl(D3DXCOLOR a, D3DXCOLOR d, D3DXCOLOR s, D3DXCOLOR e, float p);
  60. const D3DMATERIAL9 WHITE_MTRL  = InitMtrl(WHITE, WHITE, WHITE, BLACK, 2.0f);
  61. const D3DMATERIAL9 RED_MTRL    = InitMtrl(RED, RED, RED, BLACK, 2.0f);
  62. const D3DMATERIAL9 GREEN_MTRL  = InitMtrl(GREEN, GREEN, GREEN, BLACK, 2.0f);
  63. const D3DMATERIAL9 BLUE_MTRL   = InitMtrl(BLUE, BLUE, BLUE, BLACK, 2.0f);
  64. const D3DMATERIAL9 YELLOW_MTRL = InitMtrl(YELLOW, YELLOW, YELLOW, BLACK, 2.0f);
  65. //
  66. // Bounding Objects
  67. //
  68. struct BoundingBox
  69. {
  70. BoundingBox();
  71. BoundingBox(D3DXVECTOR3 minPoint, D3DXVECTOR3 maxPoint);
  72. bool isPointInside(D3DXVECTOR3& p);
  73. D3DXVECTOR3 _minPoint;
  74. D3DXVECTOR3 _maxPoint;
  75. };
  76. struct BoundingSphere
  77. {
  78. BoundingSphere(D3DXVECTOR3 center, float radius);
  79. D3DXVECTOR3 _center;
  80. float       _radius;
  81. };
  82. //
  83. // Randomness
  84. //
  85. // Desc: Return random float in [lowBound, highBound] interval.
  86. float GetRandomFloat(float lowBound, float highBound);
  87. // Desc: Returns a random vector in the bounds specified by min and max.
  88. void GetRandomVector(
  89. D3DXVECTOR3* out,
  90. D3DXVECTOR3* min,
  91. D3DXVECTOR3* max);
  92. //
  93. // Conversion
  94. //
  95. DWORD FtoDw(float f);
  96. //}
  97. #endif // __d3dUtilityH__