编程视频游戏的声音效果

C++ - Coding video game sound effects?

本文关键字:音效 声音 视频 游戏 编程      更新时间:2023-10-16

我已经做了一堆研究,但我不知道如何加载。wav文件到内存中,然后播放它。此外,我希望有能力同时播放多个加载的。wav文件。

目前,我将.wav文件加载到字符串缓冲区中,然后调用:

PlaySound(stows(buffer).c_str(), NULL, SND_MEMORY);

stows()是我创建的一个函数,它将字符串转换为宽字符串。

我做错了什么/我可以做得更好?

编辑:我正在尝试使用SFML现在。我完全按照这里的演练进行,但是当我尝试编译时,我得到了9个链接器错误。不管我使用的是静态的还是动态的dll

EDIT2:我必须有VS2010 32位。我为VS2010下载了SFML 2.0 32位,现在我减少了5个链接器错误。它说所有这些都发生在sml -audio .lib中。

编辑3:我把它编译了!然而,它并没有播放任何内容。我使用VS调试并确认我正确地打开WAV文件并将其存储在一个声音对象中,但是当我调用play()方法时,什么也没有发生。此外,每次关闭程序时,我都会得到一个未处理的异常。

我有理由相信PlaySound不能同时播放两种声音。你可以让一个声音打断另一个声音,你可以让它在后台播放,而你的代码正在做其他事情(使用SND_ASYNC),但文档非常清楚地说明"如果播放另一个声音,当前一个停止"-在SND_NOSTOP:

部分

如果不指定此标志,PlaySound将尝试停止任何声音当前正在同一进程中播放的

(如果你指定SND_NOSTOP,它不会播放这个声音,如果另一个声音已经在播放)。

链接到完整的文档:PlaySound .

恐怕我不知道你是如何创建声音播放同时使用多个声音,因为我从来没有在PC上这样做过(我使用过硬件混音器,我也写过代码,从一个文件合并两种声音,但这几乎肯定不是你想要的)

我搞定了!我最终使用了直接的声音。我根据我在这里找到的教程制作了一个类来加载和播放。wav文件,这非常有帮助。