OpenAL:alSourcePlay() 会阻塞当前线程吗?

And*_*ang 5 audio openal

我找不到有关此功能的详细说明。我现在想知道的是:

这个函数会阻塞当前线程吗?或者它只是告诉设备开始异步播放音频并立即返回?

Sco*_*and 2

是的,包装对 alSourcePlay 的调用的代码正在阻塞,因此希望位于其自己的线程中。OpenAL 有自己的事件循环来缓冲声音并将声音渲染到音频设备中。

通常,您需要一个单独的线程来提供源媒体(线程 1),并使用另一个线程来提供 OpenAL 逻辑(线程 2)。这是对 UI 线程(线程 3)(如果有)的补充。