Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C+中使用PlaySound()+/OpenGL在后台播放声音 我试图在一个用OpenGL构建的C++游戏背景下播放WAV文件。我正在使用以下行播放wav文件: PlaySound("starwars.wav", NULL, SND_FILENAME|SND_LOOP);_C++_C_Windows_Audio_Graphics - Fatal编程技术网

在C+中使用PlaySound()+/OpenGL在后台播放声音 我试图在一个用OpenGL构建的C++游戏背景下播放WAV文件。我正在使用以下行播放wav文件: PlaySound("starwars.wav", NULL, SND_FILENAME|SND_LOOP);

在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

问题是音乐开始时动画停止。我试着在按下键盘按钮时开始播放音乐,但当我这样做时,音乐开始播放,所有的动画停止。有没有办法避免这种情况?我只想在后台播放一些音乐,而PlaySound似乎是实现这一点的最简单的方法,因为它只需要一行代码。

你想通过吗

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()中,还是在动画函数中?