gpt4 book ai didi

iphone - 我可以在给定时间仅播放任何缓冲区一次吗?

转载 作者:行者123 更新时间:2023-12-03 19:42:42 25 4
gpt4 key购买 nike

来自 OpenAL 文档:

The basic OpenAL objects are a Listener, a Source, and a Buffer. There can be a large number of Buffers, which contain audio data. Each buffer can be attached to one or more Sources

我的问题是,我有一个声音文件,我需要每秒同时播放多次。声音时长2秒。所以会重叠。

我是否需要为此填充多个缓冲区(=内存中声音的多次)?

如果我将一个缓冲区附加到多个源,我是否能够将声音播放 10 次(自身重叠),而内存中只有一份副本?或者我仍然需要处理内存中该声音的 10 个副本吗?

最佳答案

可以,缓冲区独立于,您可以通过调用 alSourcePlay( ) 您播放而不是缓冲区

在同时播放指向同一缓冲区的多个时,他们如何管理缓冲区对于程序员来说是黑盒,它由openAL驱动程序管理。

您应该注意到 openAL buffer 并不(总是)与内存中的音频数据相同,openAL buffer 取决于 openAL 驱动程序的实现,数据缓冲区可以位于系统内存或声卡内存中。因此,当您调用 alBuferData 时,您正在将音频数据从内存复制到 openAL 托管内存,之后 openAL 缓冲区就没有指向音频数据的引用或指针,您可以在不影响 openAL 的情况下操作音频数据缓冲区。

关于iphone - 我可以在给定时间仅播放任何缓冲区一次吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2761899/

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