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. template<class T> void Release(T t)
  15. {
  16. if( t )
  17. {
  18. t->Release();
  19. t = 0;
  20. }
  21. }
  22. template<class T> void Delete(T t)
  23. {
  24. if( t )
  25. {
  26. delete t;
  27. t = 0;
  28. }
  29. }
  30. //
  31. // Colors
  32. //
  33. const D3DXCOLOR      WHITE( D3DCOLOR_XRGB(255, 255, 255) );
  34. const D3DXCOLOR      BLACK( D3DCOLOR_XRGB(  0,   0,   0) );
  35. const D3DXCOLOR        RED( D3DCOLOR_XRGB(255,   0,   0) );
  36. const D3DXCOLOR      GREEN( D3DCOLOR_XRGB(  0, 255,   0) );
  37. const D3DXCOLOR       BLUE( D3DCOLOR_XRGB(  0,   0, 255) );
  38. const D3DXCOLOR     YELLOW( D3DCOLOR_XRGB(255, 255,   0) );
  39. const D3DXCOLOR       CYAN( D3DCOLOR_XRGB(  0, 255, 255) );
  40. const D3DXCOLOR    MAGENTA( D3DCOLOR_XRGB(255,   0, 255) );
  41. //
  42. // d3d Object and Device, Windowed = TRUE, Stencil Format = D3DFORMAT_D24S8
  43. //
  44. bool Initd3dDevice( IDirect3D9* pD3D, IDirect3DDevice9** ppD3DDevice, HWND hWnd);
  45. // Lights
  46. D3DLIGHT9 InitDirectionalLight(D3DXVECTOR3* direction, D3DXCOLOR* color);
  47. D3DLIGHT9 InitPointLight(D3DXVECTOR3* position, D3DXCOLOR* color);
  48. D3DLIGHT9 InitSpotLight(D3DXVECTOR3* position, D3DXVECTOR3* direction, D3DXCOLOR* color);
  49. // Materials
  50. D3DMATERIAL9 InitMtrl(D3DXCOLOR a, D3DXCOLOR d, D3DXCOLOR s, D3DXCOLOR e, float p);
  51. const D3DMATERIAL9 WHITE_MTRL  = InitMtrl(WHITE, WHITE, WHITE, BLACK, 2.0f);
  52. const D3DMATERIAL9 RED_MTRL    = InitMtrl(RED, RED, RED, BLACK, 2.0f);
  53. const D3DMATERIAL9 GREEN_MTRL  = InitMtrl(GREEN, GREEN, GREEN, BLACK, 2.0f);
  54. const D3DMATERIAL9 BLUE_MTRL   = InitMtrl(BLUE, BLUE, BLUE, BLACK, 2.0f);
  55. const D3DMATERIAL9 YELLOW_MTRL = InitMtrl(YELLOW, YELLOW, YELLOW, BLACK, 2.0f);
  56. // Bounding Objects
  57. struct BoundingBox
  58. {
  59. BoundingBox();
  60. BoundingBox(D3DXVECTOR3 minPoint, D3DXVECTOR3 maxPoint);
  61. bool isPointInside(D3DXVECTOR3& p);
  62. D3DXVECTOR3 _minPoint;
  63. D3DXVECTOR3 _maxPoint;
  64. };
  65. struct BoundingSphere
  66. {
  67. BoundingSphere(D3DXVECTOR3 center, float radius);
  68. D3DXVECTOR3 _center;
  69. float       _radius;
  70. };
  71. // Desc: Return random float in [lowBound, highBound] interval.
  72. float GetRandomFloat(float lowBound, float highBound);
  73. // Desc: Returns a random vector in the bounds specified by min and max.
  74. void GetRandomVector(D3DXVECTOR3* out, D3DXVECTOR3* min, D3DXVECTOR3* max);
  75. //
  76. // Conversion
  77. //
  78. DWORD FtoDw(float f);
  79. #endif // __d3dUtilityH__