OpenAL 中的 ALC_STEREO_SOURCES 是啥?
Posted
技术标签:
【中文标题】OpenAL 中的 ALC_STEREO_SOURCES 是啥?【英文标题】:Waht is ALC_STEREO_SOURCES in OpenAL?OpenAL 中的 ALC_STEREO_SOURCES 是什么? 【发布时间】:2019-09-02 12:33:49 【问题描述】:我需要确定在 OpenAL 中同时播放源的最大数量。在this 回答@deft_code 建议查询ALC_STEREO_SOURCES
的上下文。
OpenAL 1.1 规范说:
ALC_STEREO_SOURCES:指示应该有多少来源的提示 能够支持立体声数据
从这个描述中不清楚,如果ALC_STEREO_SOURCES
表示可以通过alGenSources
创建的最大源,或者同时播放源的最大数量。
那么ALC_STEREO_SOURCES
到底是什么意思?
【问题讨论】:
【参考方案1】: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_SOURCES
和 ALC_MONO_SOURCES
确实是提示,但是它们也应该可以使用 alcGetIntegerv
进行查询。你也可以在他们的邮件列表中阅读:http://openal.996291.n3.nabble.com/Max-number-of-sources-and-legit-id-values-for-each-OpenAL-implementation-td3200.html
从这个描述不清楚,如果 ALC_STEREO_SOURCES 表明 可以通过 alGenSources 创建的最大源,或最大数量 同时播放源。
根据我收集到的信息,没有人知道。正如您已经注意到的那样,这取决于实现,并且文档对它(以及许多其他事情)非常不清楚。
我读到的另一个问题是:alcGetIntegerv
可能会告诉您例如可以播放/拥有 32 个来源。然而,根据 OpenAL 实现,该数字可以跨进程共享。因此,其他进程会在您不知情的情况下从该数字中减去。在运行时,当您在 32 个源的限制范围内尝试创建或播放源时,这将导致 OpenAL 错误。
就我个人而言,我会编写一个资源管理器,仅在没有未使用的资源时才回收资源并分配新的资源。
【讨论】:
已经有这样的经理了,但是进程间共享的资源吓到我了。感谢您的回复! @Sergey 是的,我想你现在已经想出了一个解决方案。关于共享资源:这似乎只适用于硬件 OpenAL 驱动程序。以上是关于OpenAL 中的 ALC_STEREO_SOURCES 是啥?的主要内容,如果未能解决你的问题,请参考以下文章