是否可以创建"全局"声源,这意味着它们的音量和音高完全不受听众的位置和速度的影响?
我想在我的应用程序中同时使用系统声音(不受侦听器影响)和三维声音,但我找不到任何解决方案。
如果你的声音是立体声的,那么你可以把它们放在任何地方,它们不受相对距离、旋转或速度的影响。
但如果它们是单声道的,你需要做更多的工作:
所有音频源都有position & velocity relative to listener
标志。打开它并将源坐标保留在默认位置{0,0,0}
,速度为零。
alSourcei(source, AL_SOURCE_RELATIVE, 1); // This turns on the flag
只有当您使用夹紧距离模型之一时,这才会起作用。默认为CCD_ 3,所以你应该不会有任何问题。(距离模型是一个方程,它决定了当与听众的距离发生变化时,音量的变化方式。你可以用OpenAL函数选择其中一个模型。钳制距离模型是这样一个模型,当声音正好放在听众身上时,声音不会变得无限大。因此,音量被箝位到某个最大值。)。)但是,如果您使用非钳制距离模型,那么您应该打开标志,并将您的声音与听众保持一个参考距离。因此,它将处于,例如,{ref_distance,0,0}
。默认参考距离为1.0
,但您可以使用OpenAL函数更改它。(参考距离是声音音量等于1
的距离。)