3
A
回答
2
是的,將你的呼叫包裝到alSourcePlay的代碼被阻止,所以 想要在它自己的線程中。 OpenAL擁有自己的事件循環 ,可緩衝聲音並將聲音呈現給音頻設備。
通常,您希望單獨的線程爲您的源媒體(線程1)和另一個線程提供OpenAL邏輯(線程2)。這是除了你的UI線程(線程3),如果有的話。
相關問題
- 1. NSTImer事件會阻塞主線程嗎?
- 2. 阻止阻塞的線程阻塞
- 3. 阻塞隊列不阻塞線程?
- 4. MessageBeep線程阻塞
- 5. 阻塞線程 - Java
- 6. 非阻塞線程
- 7. Java線程阻塞
- 8. 關閉流阻塞線程嗎?
- 9. performSelector:onThread:當目標線程被阻塞時
- 10. 更新tableView不會阻塞主線程
- 11. 會LINQ到對象阻塞線程?
- 12. 將線程阻塞轉換爲f中的非線程阻塞#
- 13. STA線程模式線程也會阻塞winform UI線程?
- 14. 如何知道java方法阻塞當前線程
- 15. 強制異步操作阻塞當前線程
- 16. 什麼可能導致EventWaitHandle.Set()阻塞當前線程?
- 17. iPhone ...動作之間暫停當前線程(非阻塞)
- 18. 阻止當前線程RXJS
- 19. 顯示形式(對話),而不會阻塞當前線程(進度例子)
- 20. 其他線程會在CUDA中的代碼中阻塞嗎?
- 21. QMessageBox會阻塞Qt中整個主線程的運行嗎?
- 22. 阻塞的線程是否會導致進程阻塞?爲什麼和如何?
- 23. 當一個線程被阻塞時,其他線程會發生什麼?
- 24. UI線程被阻塞
- 25. Netty線程被阻塞
- 26. Spring ObjectPooling&線程阻塞
- 27. 隊列阻塞主線程
- 28. 沒有阻塞線程
- 29. ConnectAsync阻塞UI線程
- 30. Java selector.select()阻塞線程?
例如,我應該這樣做:{後臺線程} - 寫入PCM數據 - > [共享緩衝區] - 讀 - > {主線程}。後臺線程在主線程播放時調用數據(調用'alSourcePlay')它們? –
如果最終用戶與您的軟件進行交互,而不是獨立進程而沒有用戶界面,則UI代碼需要其自己的線程(通常是主線程)。需要額外的線程來處理媒體讀取/解碼和I/O。第三個線程專用於圍繞OpenAL代碼的邏輯。但是,如果您只是在玩耍,想要撬動OpenAL的輪胎,並且不介意播放過程中出現無響應的流程,請繼續操作,並在單個線程中完成,OpenAL不介意,但會在整個媒體播放期間掛起應用程序。 –