d3dUtility.h
上传用户:zhwbfz
上传日期:2014-10-29
资源大小:8269k
文件大小:2k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. //////////////////////////////////////////////////////////////////////////////////////////////////
  2. // 
  3. // File: d3dUtility.h
  4. // 
  5. // Author: Frank Luna (C) All Rights Reserved
  6. //
  7. // System: AMD Athlon 1800+ XP, 512 DDR, Geforce 3, Windows XP, MSVC++ 7.0 
  8. //
  9. // Desc: Provides utility functions for simplifying common tasks.
  10. //          
  11. //////////////////////////////////////////////////////////////////////////////////////////////////
  12. #ifndef __d3dUtilityH__
  13. #define __d3dUtilityH__
  14. #include <d3dx9.h>
  15. #include <string>
  16. namespace d3d
  17. {
  18. bool InitD3D(
  19. HINSTANCE hInstance,       // [in] Application instance.
  20. int width, int height,     // [in] Backbuffer dimensions.
  21. bool windowed,             // [in] Windowed (true)or full screen (false).
  22. D3DDEVTYPE deviceType,     // [in] HAL or REF
  23. IDirect3DDevice9** device);// [out]The created device.
  24. int EnterMsgLoop( 
  25. bool (*ptr_display)(float timeDelta));
  26. LRESULT CALLBACK WndProc(
  27. HWND hwnd,
  28. UINT msg, 
  29. WPARAM wParam,
  30. LPARAM lParam);
  31. template<class T> void Release(T t)
  32. {
  33. if( t )
  34. {
  35. t->Release();
  36. t = 0;
  37. }
  38. }
  39. template<class T> void Delete(T t)
  40. {
  41. if( t )
  42. {
  43. delete t;
  44. t = 0;
  45. }
  46. }
  47. const D3DXCOLOR      WHITE( D3DCOLOR_XRGB(255, 255, 255) );
  48. const D3DXCOLOR      BLACK( D3DCOLOR_XRGB(  0,   0,   0) );
  49. const D3DXCOLOR        RED( D3DCOLOR_XRGB(255,   0,   0) );
  50. const D3DXCOLOR      GREEN( D3DCOLOR_XRGB(  0, 255,   0) );
  51. const D3DXCOLOR       BLUE( D3DCOLOR_XRGB(  0,   0, 255) );
  52. const D3DXCOLOR     YELLOW( D3DCOLOR_XRGB(255, 255,   0) );
  53. const D3DXCOLOR       CYAN( D3DCOLOR_XRGB(  0, 255, 255) );
  54. const D3DXCOLOR    MAGENTA( D3DCOLOR_XRGB(255,   0, 255) );
  55. //
  56. // Lights
  57. //
  58. D3DLIGHT9 InitDirectionalLight(D3DXVECTOR3* direction, D3DXCOLOR* color);
  59. D3DLIGHT9 InitPointLight(D3DXVECTOR3* position, D3DXCOLOR* color);
  60. D3DLIGHT9 InitSpotLight(D3DXVECTOR3* position, D3DXVECTOR3* direction, D3DXCOLOR* color);
  61. //
  62. // Materials
  63. //
  64. D3DMATERIAL9 InitMtrl(D3DXCOLOR a, D3DXCOLOR d, D3DXCOLOR s, D3DXCOLOR e, float p);
  65. const D3DMATERIAL9 WHITE_MTRL  = InitMtrl(WHITE, WHITE, WHITE, BLACK, 2.0f);
  66. const D3DMATERIAL9 RED_MTRL    = InitMtrl(RED, RED, RED, BLACK, 2.0f);
  67. const D3DMATERIAL9 GREEN_MTRL  = InitMtrl(GREEN, GREEN, GREEN, BLACK, 2.0f);
  68. const D3DMATERIAL9 BLUE_MTRL   = InitMtrl(BLUE, BLUE, BLUE, BLACK, 2.0f);
  69. const D3DMATERIAL9 YELLOW_MTRL = InitMtrl(YELLOW, YELLOW, YELLOW, BLACK, 2.0f);
  70. }
  71. #endif // __d3dUtilityH__