gpt4 book ai didi

audio - OpenAL 设备、缓冲区和上下文关系

转载 作者:行者123 更新时间:2023-12-04 08:38:53 26 4
gpt4 key购买 nike

我正在尝试创建一个面向对象的模型来包装 OpenAL,但在理解设备、缓冲区和上下文时遇到了一些问题。

从我在程序员指南中看到的,有多个设备,每个设备都可以有多个上下文以及多个缓冲区。每个上下文都有一个监听器,而 alListener*()函数都在事件上下文的监听器上运行。 (这意味着如果我想改变它的监听器,我必须首先激活另一个上下文,如果我做对了。)到目前为止,一切都很好。
但让我恼火的是我需要将设备传递给 alcCreateContext()功能,但没有到 alGenBuffers() .

这是如何工作的呢?当我打开多个设备时,缓冲区是在哪个设备上创建的?缓冲区是否在所有设备之间共享?如果我关闭所有打开的设备,缓冲区会发生什么情况?

(或者我错过了什么?)

最佳答案

好的,问题解决了。我问了问题 here答案是

All the al* functions (rather than alc* functions) operate on the current context. So, alGenBuffer calls will operate on the current context and create Buffers that belong to the Context's Device (a Context can only have one Device).

Buffers created on one Device are not available on another Device.

A Device's Buffers will (probably) be automatically destroyed when you call alcCloseDevice.



因此,我必须激活该设备的任意上下文,然后创建缓冲区,然后再次激活旧上下文。或者,如果设备不事件,则完全阻止创建缓冲区,这意味着它的上下文都不是事件的。

关于audio - OpenAL 设备、缓冲区和上下文关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2960563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com