T3D图形库(三)

16 篇文章 0 订阅
7 篇文章 0 订阅

 T3D图形库DMusic&&DSound头文件部分

 

  1. /*2008.10.3
  2. T3D图形库
  3. ——<<windows游戏
  4. 编程大师技巧>>
  5. */
  6. // DirectSound && DirectMusic
  7. #ifndef DS_DM_LIB
  8. #define DS_DM_LIB
  9. #define DM_NUM_SEGMENTS 64 // 内存中可以被捕获到的MIDI音乐段
  10. // midi对象状态
  11. #define MIDI_NULL     0   // 没有被加载
  12. #define MIDI_LOADED   1   // 被加载
  13. #define MIDI_PLAYING  2   // 在播放
  14. #define MIDI_STOPPED  3   // 被加载后停止
  15. #define MAX_SOUNDS     256 // 声音数量
  16. // 数字声音状态
  17. #define SOUND_NULL     0  //同上
  18. #define SOUND_LOADED   1
  19. #define SOUND_PLAYING  2
  20. #define SOUND_STOPPED  3
  21. // 以下宏使其兼容 directx 7.0
  22. #ifndef DSBCAPS_CTRLDEFAULT
  23. #define DSBCAPS_CTRLDEFAULT (DSBCAPS_CTRLFREQUENCY | DSBCAPS_CTRLPAN | DSBCAPS_CTRLVOLUME )
  24. #endif
  25. // 转换为微软分贝单位 volume为100则声音最大
  26. #define DSVOLUME_TO_DB(volume) ((DWORD)(-30*(100 - volume)))
  27. // 多子节字符转换为宽字符串
  28. #define MULTI_TO_WIDE( x,y )  MultiByteToWideChar( CP_ACP,MB_PRECOMPOSED, y,-1,x,_MAX_PATH);
  29. // 初始化结构体
  30. #define DD_INIT_STRUCT(ddstruct) { memset(&ddstruct,0,sizeof(ddstruct)); ddstruct.dwSize=sizeof(ddstruct); }
  31. // 类型 //
  32. // 存储单一的声音文件
  33. typedef struct pcm_sound_typ
  34.     {
  35.     LPDIRECTSOUNDBUFFER dsbuffer;   // DS 的后备缓冲
  36.     int state;                      // 声音状态
  37.     int rate;                       // 回放速率
  38.     int size;                       // 声音大小
  39.     int id;                         // 声音ID
  40.     } pcm_sound, *pcm_sound_ptr;
  41. // DM midi段 结构
  42. typedef struct DMUSIC_MIDI_TYP
  43. {
  44. IDirectMusicSegment        *dm_segment;  // the directmusic segment
  45. IDirectMusicSegmentState   *dm_segstate; // the state of the segment
  46. int                        id;           // the id of this segment               
  47. int                        state;        // state of midi song
  48. } DMUSIC_MIDI, *DMUSIC_MIDI_PTR;
  49. // 函数接口 /
  50. // directsound
  51. int DSound_Load_WAV(char *filename, int control_flags = DSBCAPS_CTRLDEFAULT);
  52. int DSound_Replicate_Sound(int source_id);
  53. int DSound_Play(int id, int flags=0, int volume=0, int rate=0, int pan=0);
  54. int DSound_Stop_Sound(int id);
  55. int DSound_Stop_All_Sounds(void);
  56. int DSound_Init(void);
  57. int DSound_Shutdown(void);
  58. int DSound_Delete_Sound(int id);
  59. int DSound_Delete_All_Sounds(void);
  60. int DSound_Status_Sound(int id);
  61. int DSound_Set_Volume(int id,int vol);
  62. int DSound_Set_Freq(int id,int freq);
  63. int DSound_Set_Pan(int id,int pan);
  64. // directmusic
  65. int DMusic_Load_MIDI(char *filename);
  66. int DMusic_Play(int id);
  67. int DMusic_Stop(int id);
  68. int DMusic_Shutdown(void);
  69. int DMusic_Delete_MIDI(int id);
  70. int DMusic_Delete_All_MIDI(void);
  71. int DMusic_Status_MIDI(int id);
  72. int DMusic_Init(void);
  73. // GLOBALS 
  74. // EXTERNALS //
  75. extern HWND main_window_handle; // save the window handle
  76. extern HINSTANCE main_instance; // save the instance
  77. extern LPDIRECTSOUND        lpds;           // directsound interface pointer
  78. extern DSBUFFERDESC         dsbd;           // directsound description
  79. extern DSCAPS               dscaps;         // directsound caps
  80. extern HRESULT              dsresult;       // general directsound result
  81. extern DSBCAPS              dsbcaps;        // directsound buffer caps
  82. extern LPDIRECTSOUNDBUFFER  lpdsbprimary;   // the primary mixing buffer
  83. extern pcm_sound            sound_fx[MAX_SOUNDS];    // the array of secondary sound buffers
  84. extern WAVEFORMATEX         pcmwf;          // generic waveformat structure
  85. // direct music globals
  86. extern IDirectMusicPerformance    *dm_perf ;    // the directmusic performance manager 
  87. extern IDirectMusicLoader         *dm_loader;  // the directmusic loader
  88. // this hold all the directmusic midi objects
  89. extern DMUSIC_MIDI                dm_midi[DM_NUM_SEGMENTS];
  90. extern int dm_active_id;                               // currently active midi segment
  91. #endif

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值