我正在使用C ++和Win32 API编写一个简单的游戏。我想在初始化阶段(游戏开始前)将一些声音效果加载到内存中。然后我希望能够在游戏过程中异步触发这些声音。
我已经研究了几篇推荐mmlib,(PlaySound)的帖子,这样可行,但每次都会从文件中加载示例,如下所示:
PlaySound("rocket_launch.wav", NULL, SND_FILENAME | SND_ASYNC);
我想在开始时将声音加载到内存中,然后随时播放它们。希望我不需要使用资源文件。
我该怎么做?
答案 0 :(得分:3)
PlaySound
docs表示要传入SND_MEMORY
以指示第一个参数指向内存缓冲区。
首先,将文件加载到内存中,然后将指针传递给缓冲区,并替换SND_FILENAME
标志的SND_MEMORY
标志。
答案 1 :(得分:0)
致任何寻找简单示例的人:
std::string sound = "RIFFªÛ\x5....."; //(Binary of a .wav file)
PlaySoundA(sound.c_str(), NULL, SND_MEMORY | SND_SYNC); //Extracting the binary to a c-style string & playing