在C+中使用PlaySound()+/OpenGL在后台播放声音 我试图在一个用OpenGL构建的C++游戏背景下播放WAV文件。我正在使用以下行播放wav文件: PlaySound("starwars.wav", NULL, SND_FILENAME|SND_LOOP);
问题是音乐开始时动画停止。我试着在按下键盘按钮时开始播放音乐,但当我这样做时,音乐开始播放,所有的动画停止。有没有办法避免这种情况?我只想在后台播放一些音乐,而PlaySound似乎是实现这一点的最简单的方法,因为它只需要一行代码。你想通过吗在C+中使用PlaySound()+/OpenGL在后台播放声音 我试图在一个用OpenGL构建的C++游戏背景下播放WAV文件。我正在使用以下行播放wav文件: PlaySound("starwars.wav", NULL, SND_FILENAME|SND_LOOP);,c++,c,windows,audio,graphics,C++,C,Windows,Audio,Graphics,问题是音乐开始时动画停止。我试着在按下键盘按钮时开始播放音乐,但当我这样做时,音乐开始播放,所有的动画停止。有没有办法避免这种情况?我只想在后台播放一些音乐,而PlaySound似乎是实现这一点的最简单的方法,因为它只需要一行代码。你想通过吗 SND\u异步 这将使PlaySound立即返回,而不是等待声音结束播放,而在您的情况下,这在循环时不会发生。IIRC PlaySound在任何时候只允许播放一种声音,因此最好寻找一个声音库,尤其是在制作游戏时 总之,为了让您的样品发挥作用: PlaySo
SND\u异步
这将使PlaySound立即返回,而不是等待声音结束播放,而在您的情况下,这在循环时不会发生。IIRC PlaySound在任何时候只允许播放一种声音,因此最好寻找一个声音库,尤其是在制作游戏时
总之,为了让您的样品发挥作用:
PlaySound(“starwars.wav”,NULL,SND_异步| SND_文件名| SND_循环)代码>
我不是windows sound API的专家,但函数PlaySound
似乎是一个阻塞操作,这意味着您的应用程序将冻结,直到函数完成,即声音将一直播放到最后。也许有一面旗帜可以绕过这一点
您可以为声音启动一个线程,该线程在声音停止后结束。或者您可能需要查看一个简单的声音API。如果您使用的是playSound(“*.wav”,NULL,SND|u SYNC | SND|u LOOP)格式,几乎您无法控制游戏的动画,它将与playSound()中包含的循环一起冻结函数,它是SND_循环,但如果您将SND_SYNC更改为SND_ASYNC,它将完全按照您的命令工作,但不要忘记它适用于windows,并且不要忘记在project/opengl/visual c++/link下包含WINMM.LIB(窗口多媒体库)没有问题,别忘了将此标记为答案:)我还认为您应该研究一个健全的API,看看这个问题,我可以问一下,这行代码放在哪里?在Main()中,还是在动画函数中?