我正在尝试创建一个面向对象的模型来包装 OpenAL,并且在理解设备、缓冲区和上下文时遇到了一点问题。
从我在程序员指南中可以看到,有多个设备,每个设备可以有多个上下文以及多个缓冲区。每个上下文都有一个监听器,所有的alListener*()
函数都对活动上下文的监听器进行操作。(这意味着如果我想改变它的听众,我必须先激活另一个上下文,如果我做对了。)到目前为止,一切都很好。令我恼火的是我需要将设备传递给alcCreateContext()
函数,但没有传递给alGenBuffers()
.
那么这是如何工作的呢?当我打开多个设备时,缓冲区是在哪个设备上创建的?缓冲区是否在所有设备之间共享?如果我关闭所有打开的设备,缓冲区会怎样?
(或者我错过了什么?)