gpt4 book ai didi

c++ - OpenAL 2d 平移 C++

转载 作者:行者123 更新时间:2023-11-30 04:09:47 24 4
gpt4 key购买 nike

我正在尝试弄清楚如何让 openAL 在 2D 中平移(通过操纵 3D 定位)。理想情况下,我希望实现平移,以便左声道或右声道可以完全参与,而另一个声道完全静音。 Open AL 似乎可以很好地处理 3d 距离和衰减,但我正在努力模拟这种 2D 平移。

我正在使用

alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED)

float sourcePosition[3] = {0.99f,0.f,0.f};
alSourcefv(sourceID, AL_POSITION, sourcePosition);
alSourcei(sourceID, AL_SOURCE_RELATIVE, AL_FALSE);
alSourcef(sourceID, AL_MAX_DISTANCE, 1.f);
alSourcef(sourceID, AL_REFERENCE_DISTANCE, 0.5f);

但是右声道中有大量音频。我真的不希望增益根据距离而下降,只是按比例分配 channel 。

是否可以使用开放式 AL 模拟 2d 平移?

最佳答案

您需要将 AL_SOURCE_RELATIVE 设置为 AL_TRUE,而不是 false。

AL_SOURCE_RELATIVE set to AL_TRUE indicates that the position, velocity, cone, and direction properties of a source are to be interpreted relative to the listener position.

OpenAL 1.1 Specification 如是说(第 34 页)!

所以,改变

alSourcei(sourceID, AL_SOURCE_RELATIVE, AL_FALSE);

alSourcei(sourceID, AL_SOURCE_RELATIVE, AL_TRUE);

应该达到预期的结果。

关于c++ - OpenAL 2d 平移 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20950606/

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