编程视频游戏的声音效果
C++ - Coding video game sound effects?
我已经做了一堆研究,但我不知道如何加载。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文件,这非常有帮助。
- Xaudio2在更改缓冲区或循环时弹出声音
- 如何更改'a'声音?
- 如何收听Windows当前正在播放的声音?
- 如何在 c++ 中循环中使用频率变化的声音?
- 如何在C++中播放声音?
- 波形音频 - waveOutWrite 发出断断续续的声音
- 如何使用 ALSA API 在应用程序中在单声道和立体声之间切换声音输出?
- 有没有办法毫不拖延地播放声音?
- 在不打开应用程序的情况下在MinGW c++中播放声音(.wav)文件
- SFML c ++ 当包含文件内游戏中发生事件时,如何使用铃声函数为我的游戏创建声音类?
- 如何在QT中飞溅之前播放声音?
- 如何根据物体位置和速度,玩家位置和向前矢量计算左耳和右耳的音量?(3D声音)
- 计时器达到零时如何播放声音?
- 如何在主游戏循环中使用 sfml 只播放一次声音
- 避免在暂停时破坏声音
- 每次播放前都会出现超强的 SDK 声音故障
- 音乐和音效无法在win32平台上播放?(Cocos2D-X)
- Qt - 重新实现QIODevice,实时听到我自己的声音
- 使用MinGW播放声音
- 如何为音频应用程序/插件模拟真空管的声音