OpenAL 中的 ALC_STEREO_SOURCES 是什么?

Waht is ALC_STEREO_SOURCES in OpenAL?

我需要确定在 OpenAL 中同时播放源的最大数量。在this回答@deft_code建议查询ALC_STEREO_SOURCES的上下文。

OpenAL 1.1 规范说:

ALC_STEREO_SOURCES: A hint indicating how many sources should be capable of supporting stereo data

从这个描述中不清楚,如果 ALC_STEREO_SOURCES 表示可以通过 alGenSources 创建的最大源,或者同时播放源的最大数量。

那么 ALC_STEREO_SOURCES 到底是什么意思?

TL;DR: OpenAL 的设计和记录都很糟糕。

长话短说:
Creative 员工自己建议使用 OpenAL Soft 而不是 Creative 提供的实现(但是我还没有使用过 OpenAL Soft,因此目前不能保证)。显然它也更快。 您可以在他们的邮件列表中阅读该建议:http://openal.996291.n3.nabble.com/what-s-going-on-with-connect-creativelabs-com-td5546.html

ALC_STEREO_SOURCESALC_MONO_SOURCES 确实是提示,但是它们也应该可以使用 alcGetIntegerv 查询。您还可以在他们的邮件列表中阅读相关内容:http://openal.996291.n3.nabble.com/Max-number-of-sources-and-legit-id-values-for-each-OpenAL-implementation-td3200.html

From this description it's not clear, if ALC_STEREO_SOURCES indicates max sources that can be created via alGenSources, or maximum number of simultaneously playing sources.

据我所知,没有人知道。这取决于实现,正如您已经注意到的那样,文档对此(以及许多其他内容)非常不清楚。

我读到另一个问题:
例如,alcGetIntegerv 可能会告诉您可以 play/have 32 个来源。然而,根据 OpenAL 的实现,该数字可以跨进程共享。因此,其他进程会在您不知情的情况下从该数字中减去。在运行时,当您尝试创建或播放源时您仍在 32 个源的限制内,这将导致 OpenAL 错误。

就我个人而言,我会编写一个资源管理器来回收资源并仅在没有剩余未使用的源时分配新的源。