我正在用 C++ 编写一段音频包装代码,以便在 XAudio2 和 OpenAL 上拥有一个抽象 API(以及稍后的更多内容)。一切正常,我的系统启动并运行,提供几乎相同的音频。
我似乎只有设置源卷有问题。XAudio2 和 OpenAL 都有一种方法来设置源声音的音量。
IXAudio2Voice::SetVolume(volume) 和 alSourcef(source, AL_GAIN, volume);
根据文档,两个函数都采用音量参数应该在 [0;1] 范围内设置级别。
但是,他们内部使用的曲线似乎不匹配。例如,当将值设置为 0.5 时,感觉就像 OpenAL 比 XAudio2 更安静
就像其中一个会线性地解释音量,而另一个就像对数一样。两个文档都没有说明它,只是说明范围是 [0;1] 并且没有说明它是如何解释的。
很难调试,因为它很难测量。有人做过这样的事情,或者有使用这些功能的经验吗?
谢谢你。
拉奇