2013-07-07 102 views
0

當鼠標左鍵單擊時,我有一個被修改的場景。OpenAL聲音從圖形中停止OpenGL

我的問題是:這個修改過的場景應該會伴隨聲音出現,但場景等待聲音完成之後纔會呈現。

我使用這個功能:

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

當然,這個函數告訴程序等待。但我可以使用什麼替代方法?如果我刪除此功能,聲音心不是打

我甚至試圖創建一個功能完善的(),glutPostRedisplay後調用,但它仍在等待聲音完全呈現

回答

1

我認爲你的問題,即聲音停止,在別的地方。不需要alGetSourcei來保持聲音播放。

無論如何,你不能在while循環中這樣做,因爲它會阻止Windows消息和OpenGL的更新,並且會阻止場景重繪。

要播放它,你只需要撥打alSourcePlay,之後你可以檢查每一幀,如果源仍在播放(如果你需要這樣做,出於某種原因)。

+0

是的,那工作:) – Frank