单击鼠标左键时,我有一个被修改的场景。
我的问题是:这个修改后的场景应该会出现声音,但场景会在渲染之前等待声音完成。
我正在使用此功能:
do {
alGetSourcei(source, AL_SOURCE_STATE, &state);
} while (state == AL_PLAYING);
当然,这个函数告诉程序要等待。但我可以使用哪种替代方案?如果我删除此功能,声音不会播放
我甚至尝试创建一个函数sound(),它在glutPostRedisplay之后调用,但它仍然等待声音完成呈现
答案 0 :(得分:1)
我认为你的问题,声音停止,是在其他地方。保持声音播放不需要alGetSourcei
。
无论如何你不能在while循环中这样做,因为它会阻止windows消息和OpenGL的更新,并会阻止场景重绘。
要播放它,您只需要拨打alSourcePlay
,之后您可以检查每个帧是否仍在播放(如果您因某些原因需要这样做)。