在C++/OpenGL中使用PlaySound()在后台播放声音

big*_*man 4 c c++ windows audio graphics

我试图在使用opengl用c ++构建的游戏的背景中播放一个wav文件.我使用以下行来播放wav文件:

 PlaySound("starwars.wav", NULL, SND_FILENAME|SND_LOOP);
Run Code Online (Sandbox Code Playgroud)

问题是当音乐开始时动画停止.我尝试按下键盘按钮启动音乐,但是当我这样做时,音乐开始,所有动画停止.有办法避免这种情况吗?我只想在背景中播放一些音乐,PlaySound似乎是实现这一目标的最简单方法,因为它只需要一行代码.

Car*_*der 8

你想传入

SND_ASYNC

这将使PlaySound立即返回,而不是等待声音完成播放,在你的情况下,你不会循环播放.IIRC PlaySound只允许一次播放一个声音,因此最好找一个声音库,特别是如果你正在制作游戏.

总之,您的样本工作:

PlaySound("starwars.wav", NULL, SND_ASYNC|SND_FILENAME|SND_LOOP);

请看这个