X3DAudio 概觀
X3DAudio 是一種 API,可與 XAudio2 搭配使用,將音效放置在 3D 空間中,以建立相對於相機位置的某個空間點的音效錯覺。特別是,功能 3D 場景的標題會想要使用 X3DAudio。 音效不需要 3D 定位,例如音軌或非定位的環境音效,可能會完全略過 X3DAudio。
接聽程式和發出器
為了在 3D 空間中管理音效,X3DAudio 會採用 接聽 程式和 發出器的概念。 接聽程式和發出器代表任何聽覺 3D 音效的位置,以及這些音效的來源點。
- 接聽程式定義為空間中的點和方向。 這是 聽到音效的位置。 接聽程式的位置和方向通常與相機的位置和方向相同。 不論標題使用第一人或第三人檢視方塊檢視,都是如此。 接聽程式的位置是以全局座標表示。 請務必注意,這是與發出器 相對 的接聽程式位置,決定如何計算最終喇叭磁片區。
- 發出器定義為聲音 來源空間中的一個 (或多個) 點。 發出器的位置可以是 3D 空間中的任何位置。 如同接聽程式,發出器的位置是以全局座標表示。 這是與接聽程式 相對 的發出器位置,決定最終喇叭磁片區的計算方式。
- X3DAudio 使用左側座標。 若要搭配右手座標使用,開發人員必須否定 X3DAUDIO_LISTENER 和 X3DAUDIO_EMITTER 的 OrientTop、OrientFront、Position 和 Velocity 成員的 .z 元素。
除了位置之外,接聽程式和發出器也可以包含速度。 不同于 3D 轉譯引擎,X3DAudio 只會使用速度來計算 Doppler 效果, (它不會用來計算位置) 。
如需接聽程式和發出器的詳細資訊,請參閱 X3DAUDIO_LISTENER 和 X3DAUDIO_EMITTER 結構參考主題。
搭配 XAudio2 使用 X3DAudio
如需 X3DAudio 與 XAudio2 之間的所有互動,請使用下列 X3DAudio 函式。
-
呼叫 X3DAudioInitialize 函式來初始化 X3DAudio。 一般而言,除非您變更說話者設定,否則您只需要在遊戲存留期內呼叫 X3DAudioInitialize 一次。
-
初始化 X3DAudio 之後,您可以將音效的發出器和接聽程式傳遞至 X3DAudioCalculate 函式,以判斷指定音效的音量和其他值。 X3DAudioCalculate所計算的值接著可以套用至 XAudio2 語音或效果,以適合傳遞給函式的旗標。 您可以使用 IXAudio2Voice::SetOutputMatrix 和 IXAudio2SourceVoice::SetFrequencyRatio 方法,將 X3DAudio 計算的音量和音調值套用至語音。 X3DAudio 計算的其他值必須使用IXAudio2Voice::SetEffectParameters方法套用至殘響效果。
如需搭配 XAudio2 使用 X3DAudio 的逐步範例,請參閱 如何:整合 X3DAudio 與 XAudio
相關主題