OpenAL声音从绘图中停止OpenGL

时间:2013-07-07 18:36:53

标签: opengl openal

单击鼠标左键时,我有一个被修改的场景。

我的问题是:这个修改后的场景应该会出现声音,但场景会在渲染之前等待声音完成。

我正在使用此功能:

do {
        alGetSourcei(source, AL_SOURCE_STATE, &state);
 } while (state == AL_PLAYING);

当然,这个函数告诉程序要等待。但我可以使用哪种替代方案?如果我删除此功能,声音不会播放

我甚至尝试创建一个函数sound(),它在glutPostRedisplay之后调用,但它仍然等待声音完成呈现

1 个答案:

答案 0 :(得分:1)

我认为你的问题,声音停止,是在其他地方。保持声音播放不需要alGetSourcei

无论如何你不能在while循环中这样做,因为它会阻止windows消息和OpenGL的更新,并会阻止场景重绘。

要播放它,您只需要拨打alSourcePlay,之后您可以检查每个帧是否仍在播放(如果您因某些原因需要这样做)。