Share via


XAudio2 簡介

XAudio2 是低階音訊 API。 它為類似其前置任務、DirectSound 和 XAudio 的遊戲提供訊號處理和混合基礎。

XAudio2 是 DirectSound 的長時間等候取代專案。 它解決了數個未處理的問題和功能要求。

XAudio2 功能

以下是 XAudio2 功能和新功能的清單,可讓開發人員改善其遊戲中的效能。

  • DSP 效果和每個語音篩選

    數位訊號處理 (DSP) 效果是音訊的圖元著色器。 它們會處理從轉換音效到將 Pig squeal 轉換成低、令人驚擾音效等一切,以使用殘響和遮蔽或阻礙篩選,將音效放在遊戲環境中。 XAudio2 提供彈性且功能強大的 DSP 架構。 它也會在每個語音上提供內建篩選,以有效率的低/高/頻傳遞篩選效果。

    如需有關 DSP 效果和每個語音篩選的詳細資訊,請參閱 XAudio2 Audio EffectsIXAudio2Voice::SetFilterParameters

  • 副混音

    副混音會將數個音效結合成單一音訊資料流程,例如,由複合元件組成的引擎音效,全部同時播放。 此外,您也可以使用副混音來處理和合併遊戲的類似部分。 例如,您可以結合所有遊戲音效,以允許在個別設定控制音樂音量時套用使用者音量設定。 與 DSP 結合,副混音提供現今遊戲所需的資料路由和處理類型。 XAudio2 允許任意層級的副混音,以建立複雜的音效和遊戲混合。

    如需副混音的詳細資訊,請參閱 XAudio2 Audio GraphXAudio2 Voices

  • 壓縮的音訊支援

    DirectSound 的其中一個主要功能要求是針對壓縮的音訊支援。 XAudio2 支援以執行時間解壓縮原生方式的壓縮格式 ADPCM。

  • 增強的多重通道和環繞音效支援

    多通道、3D 和環繞音效支援已展開。 3D 和環繞音效現在更有彈性且透明。 XAudio2 會移除多重通道音效的 6 通道限制,並支援任何支援多重通道的音訊卡上的多重通道音訊。 卡片不需要硬體加速。

  • 多速率處理

    為了協助將 CPU 使用量降到最低,XAudio2 提供建立多個低速率音訊處理圖形的技術。 如果速率小於 48 kHz,這可大幅減少 CPU 使用量,方法是讓遊戲以來源材質的速率處理音訊。

  • 非封鎖 API 模型

    有幾個例外狀況,XAudio2 方法呼叫不會封鎖音訊處理引擎。 這表示用戶端可以隨時安全地進行一組方法呼叫,而不會封鎖長時間執行的呼叫造成延遲。 例外狀況是 IXAudio2Voice::D estroyVoice 方法 ( 可能會封鎖引擎,直到終結的語音完成處理) ,以及終止音訊執行緒的方法: IXAudio2::StopEngineIXAudio2::Release。 請注意,雖然 XAudio2 方法呼叫不會封鎖音訊處理引擎,但 XAudio2 方法包含重要區段,而且在某些情況下可能會遭到封鎖。

使用 XAudio2 的時機

XAudio2 主要用於開發適用于遊戲的高效能音訊引擎。 對於想在新型遊戲中增加音效和背景音樂的遊戲開發人員而言,XAudio2 可提供低延遲的音訊圖形和混合引擎,並且支援動態緩衝區、同步取樣精確播放,以及隱含的來源速率轉換。 相較于 WASAPI,XAudio2 只需要最少的程式碼數量,即使是複雜的音訊解決方案也一定。 相較于媒體基礎引擎,XAudio2 是專為在遊戲中使用而設計的低階低延遲 C++ API。

對於只需要一般音樂播放的應用程式,媒體基礎引擎可能更符合應用程式的需求。

程式設計指南

快速入門

XAudio2 程式設計參考