macos - OpenAL 关闭软启动

标签 macos audio openal

我正在使用 OpenAL,当我调用 alSourcePlay() 时,我的声音缓冲区“轻柔地”启动。我找不到从 AL_GAIN 开始的方法。图片显示了两条记录,第一条是我想要的(我通过在不停止播放的情况下提供流缓冲区来模拟它)。第二条记录是使用新缓冲区调用 alSourcePlay() 时发生的情况。任何想法如何在没有软启动的情况下启动?

enter image description here

最佳答案

OpenAL 将单声道声音视为位置音频(在 3D 空间中),因此如果您希望单声道声音文件“全局”播放,无论位置如何,都可以在开始播放之前运行:

alSourcei(source, AL_SOURCE_RELATIVE, AL_TRUE);
这很好用。
或者,您必须将听者和源的位置设置为每帧相同,但这会浪费 CPU 周期,并可能导致音频源“滞后”(从后面播放)如果您正在高速行驶(例如在车辆或飞机内)并且您的游戏循环更新位置太慢,因为例如在短时间内以较低的 fps 运行。
此外,通过复制音频 channel 将单声道声音文件转换为立体声会浪费内存并导致加载时间稍长(因为它处理相同的数据两次)。永远不要那样做。

关于macos - OpenAL 关闭软启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61856452/

相关文章:

swift - 命令行工具中的框架问题

macos - 无法在 macOS Sierra 上通过 USB 连接到 J-Link

audio - 创建音频电平表 - 信号标准化

ios - 应用程序 "Alarmy"能够从后台状态播放 iTunes 歌曲...如何?

audio - OpenAL:alSourcePlay() 会阻塞当前线程吗?

macos - 戈朗 :alpine docker container on macOS throws "invalid symbol version for go.string" when importing gin-gonic/gin

xcode - Mac编程问题: How do I detect the URL of a redirect in a WebView?

java - 无法在我的Java应用程序中播放音频

iphone - iOS 中如何检测铃声开关状态?

c++ - 开源声音引擎