版权声明:转载请注明出处 https://blog.csdn.net/weixin_39918693/article/details/87985933
文章目录
音频对于游戏是至关重要的
1、使用DirectSound
DirectSound
是DirectX中为游戏处理所有声音输出的组件,它有一个多通道的声音混合器
作为程序员,为了进度,有时不得不使用包装器
DirectSound的三个版本:
- 1、DirectX 9.0版本:在
<dsutil.h>
和<dsutil.cpp>
中 - 2、后来的DirectX版本:在
<DSUTSound.h>
和<DSUTSound.cpp>
中 - 3、最新的版本:在
<SDKsound.h>
、<SDKsound.cpp>
和<SDKwavefile.h>
中
DirectSound的一致性问题很严重
我们使用9.0版本
,并且进行了封装,放在<DirectSound.h>
和<DirectSound.cpp>
中
我们将使用以下三个类:
- 1、
CSoundManager
:主DirectSound设备 - 2、
CSound
:用于创建DirectSound缓冲区 - 3、
CWaveFile
:将波形文件装载到CSound缓冲区中
具体使用过程:
- 1、创建DirectSound管理器对象
- 2、初始化DirectSound管理器对象
- 3、设置
音频主缓冲区
的格式 - 4、创建
第二音频缓冲区
的包装器的指针,用来装载波形文件 - 5、使用Create函数将波形文件装载入第二音频缓冲区
- 6、播放音频
- 7、停止播放
和Direct3D类似,音频主缓冲区是输出发生的地方
DSSCL_PRIORITY协作级别
能为游戏程序提供比其它可能正在运行的程序更高的声音设备优先级
通过设置音频主缓冲区的格式,可以提高声音输出质量
底层具体的交互细节已被屏蔽,不需要掌握
代码演示:
CSoundManager *dsound = new CSoundManager();
dsound->Initialize(hWnd, DSSCL_PRIORITY);
dsound->SetPrimaryBufferFormat(2, 22050, 16);
CSound *wave;
dsound->Create(&wave, "snicker.wav");
wave->Play();
wave->Stop();
建议在商业游戏中使用更好的音频引擎