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

DirextX编程

开发平台:

Visual C++

  1. //--------------------------------------------------------------------------------------
  2. // 头文件: zfxd3dUtility.h , 作者:曾凡喜
  3. //
  4. // Direct3D程序初始化,主要完成主窗口创建,D3D设备创建任务
  5. //
  6. // 版权归作者所有,未经允许不得利用源代码进行任何商业活动
  7. //
  8. // 完成时间:2007-10-31
  9. //--------------------------------------------------------------------------------------
  10. #ifndef __zfxd3dUtility_H__
  11. #define __zfxd3dUtility_H__
  12. #include <d3dx9.h>
  13. // 该函数完成了注册窗口类、创建主窗口、创建设备等任务
  14. bool InitD3DApp(HINSTANCE hInstance,  // 程序实例句柄
  15. bool windowed,             // 布尔变量,是否为窗口模式
  16. D3DDEVTYPE deviceType,     // HAL or REF
  17. IDirect3D9** pd3d9,      // D3D对象接口
  18. IDirect3DDevice9** pd3dDevice,// D3D设备接口
  19. PCTSTR szTitle,           // 窗口标题名
  20. int width = 640, int height = 480); // 窗口宽度和高度
  21. // 消息循环函数,该函数不应该在zfxd3dUtility.cpp中实现
  22. LRESULT CALLBACK WndProc(
  23. HWND hwnd,
  24. UINT msg, 
  25. WPARAM wParam,
  26. LPARAM lParam);
  27. #ifndef SAFE_DELETE
  28. #define SAFE_DELETE(p)       { if(p) { delete (p);     (p)=NULL; } }
  29. #endif    
  30. #ifndef SAFE_DELETE_ARRAY
  31. #define SAFE_DELETE_ARRAY(p) { if(p) { delete[] (p);   (p)=NULL; } }
  32. #endif    
  33. #ifndef SAFE_RELEASE
  34. #define SAFE_RELEASE(p)      { if(p) { (p)->Release(); (p)=NULL; } }
  35. #endif
  36. // 颜色定义
  37. const D3DXCOLOR      WHITE( D3DCOLOR_XRGB(255, 255, 255) );
  38. const D3DXCOLOR      BLACK( D3DCOLOR_XRGB(  0,   0,   0) );
  39. const D3DXCOLOR        RED( D3DCOLOR_XRGB(255,   0,   0) );
  40. const D3DXCOLOR      GREEN( D3DCOLOR_XRGB(  0, 255,   0) );
  41. const D3DXCOLOR       BLUE( D3DCOLOR_XRGB(  0,   0, 255) );
  42. const D3DXCOLOR     YELLOW( D3DCOLOR_XRGB(255, 255,   0) );
  43. const D3DXCOLOR       CYAN( D3DCOLOR_XRGB(  0, 255, 255) );
  44. const D3DXCOLOR    MAGENTA( D3DCOLOR_XRGB(255,   0, 255) );
  45. // 灯光定义
  46. D3DLIGHT9 InitDirectionalLight(D3DXVECTOR3* direction, D3DXCOLOR* color);
  47. D3DLIGHT9 InitPointLight(D3DXVECTOR3* position, D3DXCOLOR* color);
  48. D3DLIGHT9 InitSpotLight(D3DXVECTOR3* position, D3DXVECTOR3* direction, D3DXCOLOR* color);
  49. bool InitDXFont(IDirect3DDevice9* pd3dDevice, ID3DXFont** pFont, PCTSTR szFontType, 
  50. bool isItalic = true, int height = 15, int width = 8, int weight = 500);
  51. // 材质定义
  52. D3DMATERIAL9 InitMtrl(D3DXCOLOR a, D3DXCOLOR d, D3DXCOLOR s, D3DXCOLOR e, float p);
  53. const D3DMATERIAL9 WHITE_MTRL  = InitMtrl(WHITE, WHITE, WHITE, BLACK, 2.0f);
  54. const D3DMATERIAL9 RED_MTRL    = InitMtrl(RED, RED, RED, BLACK, 2.0f);
  55. const D3DMATERIAL9 GREEN_MTRL  = InitMtrl(GREEN, GREEN, GREEN, BLACK, 2.0f);
  56. const D3DMATERIAL9 BLUE_MTRL   = InitMtrl(BLUE, BLUE, BLUE, BLACK, 2.0f);
  57. const D3DMATERIAL9 YELLOW_MTRL = InitMtrl(YELLOW, YELLOW, YELLOW, BLACK, 2.0f);
  58. #endif  //__zfxd3dUtility_H__