2013-07-07 60 views
0

当鼠标左键单击时,我有一个被修改的场景。OpenAL声音从图形中停止OpenGL

我的问题是:这个修改过的场景应该会伴随声音出现,但场景等待声音完成之后才会呈现。

我使用这个功能:

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

当然,这个函数告诉程序等待。但我可以使用什么替代方法?如果我删除此功能,声音心不是打

我甚至试图创建一个功能完善的(),glutPostRedisplay后调用,但它仍在等待声音完全呈现

回答

1

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

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

要播放它,你只需要拨打alSourcePlay,之后你可以检查每一帧,如果源仍在播放(如果你需要这样做,出于某种原因)。

+0

是的,那工作:) – Frank