共用方式為


遊戲的音訊

瞭解如何開發音樂和聲音並將其合併到 DirectX 遊戲中,以及如何處理音訊訊號以建立動態和位置聲音。

針對音訊程式設計,建議您在 DirectX 中使用 XAudio2 程式庫,或 Windows 執行階段音訊圖形 API。 我們在此使用 XAudio2。 XAudio2 是低階音訊庫,可提供遊戲的訊號處理和混合基礎,並支援各種格式。

您也可以使用 Microsoft Media Foundation 實作簡單的音效和音樂播放。 Microsoft Media Foundation 的設計訴求是播放媒體檔案和串流,無論是音訊和視訊,也可以用於遊戲,而且特別適合用於遊戲的電影場景或非互動式元件。

概念簡介

以下是我們在本節中使用的一些音訊程式設計概念。

  • 訊號是聲音程式設計的基本單位,類似於圖形中的像素。 處理數位訊號處理器 (DSP) 就像遊戲音訊的像素著色器一樣。 它們可以轉換訊號,或加以結合,或加以篩選。 透過對 DSP 進行程式設計,您可以根據需要以或多或少的複雜程度來改變遊戲的音效和音樂。
  • 聲音是兩個或多個訊號的子混音複合。 XAudio2 聲音物件有 3 種類型:來源、子混音和後製聲音。 來源聲音對用戶端提供的音訊資料進行處理。 來源聲音和子混音將其輸出傳送至一或多個子混音或後製聲音。 子混音和後製聲音混合所有輸入的聲音,並對結果進行處理。 後製聲音會將音訊資料寫入音訊裝置。
  • 混音是將多個離散聲音,例如場景中播放的音效和背景音訊組合成單一串流的流程。 子混音是組合多個離散訊號 (例如引擎噪音的元件聲音) 並建立聲音的流程。
  • 音訊格式。 音樂和音效可以儲存在遊戲的各種數位格式。 有未壓縮的格式,例如 WAV,以及 MP3 和 OGG 等壓縮格式。 範例的壓縮程度愈高 -- 通常是由其位元速率指定,位元速率越低,壓縮容易遺失,其精確度就越差。 精確度可能會因壓縮配置和位元速率而異,因此請針對它們進行實驗,以找出最適合您遊戲的內容。
  • 取樣速率和品質。 聲音可以以不同的速率取樣,而以較低的速率取樣的聲音的精確度要低得多。 CD 品質的取樣率為 44.1 Khz (44100 Hz)。 如果您不需要高精確度的聲音,您可以選擇較低的取樣率。 較高的速率可能適用於專業音訊應用程式,但您可能不需要它們,除非您的遊戲需要專業逼真聲音。
  • 聲音發射器 (或來源)。 在 XAudio2 中,聲音發射器是發出聲音的位置,無論是背景噪音或遊戲內 Jukebox 所播放的搖擺搖滾曲目。 您可以依照世界座標指定發射器。
  • 聲音接聽程式。 聲音接聽程式通常是可處理從接聽程式收到的聲音之玩家,或可能是更進階遊戲中的 AI 實體。 您可以將聲音混音到音訊串流中,以播放給玩家,或者您可以使用它採取特定的遊戲內動作,例如喚醒標示為接聽程式的 AI 防護。

設計考量

音訊是遊戲設計和開發中非常重要的一部分。 許多玩家可以回憶起一個平庸的遊戲提升到傳奇狀態,只是因為一個難忘的配樂,或偉大的聲音工作和聲音混合,或整體優異的音訊製作。 音樂和聲音定義了遊戲的個性,並建立定義遊戲的主要動機,並使它與其他類似的遊戲區分開來。 您在設計及開發遊戲音訊設定檔時所花費的努力將非常值得。

位置 3D 音訊可以增加 3D 圖形所提供的沉浸式程度。 如果您正在開發模擬世界的複雜遊戲,或需要電影風格,請考慮使用 3D 位置音訊技術來真正吸引玩家。

DirectX 音訊開發藍圖

XAudio2 概念資源

XAudio2 是 DirectX 的音訊混合庫,主要用於開發適用於遊戲的高效能音訊引擎。 對於想要為其新式遊戲新增音效和背景音樂的遊戲開發人員,XAudio2 提供音訊圖形和混合引擎與低延遲,並支援動態緩衝區、同步樣本精確的播放,以及隱含的來源速率轉換。

主題 說明

XAudio2 簡介

本主題提供 XAudio2 所支援的音訊程式設計功能清單。

XAudio2 使用者入門

本主題提供關鍵 XAudio2 概念、XAudio2 版本和 RIFF 音訊格式的相關資訊。

常見的音訊程式設計概念

本主題提供音訊開發人員應該熟悉的常見音訊概念概觀。

XAudio2 聲音

本主題包含 XAudio2 聲音的概觀,這些聲音是用來對音訊資料進行子混合、操作和進行主要處理。

XAudio2 回撥

本主題涵蓋 XAudio 2 回撥,用來防止音訊播放中斷。

XAudio2 音訊圖形

本主題涵蓋 XAudio2 音訊處理圖形,它會從用戶端取得一組音訊串流做為輸入、處理它們,並將最終結果傳遞至音訊裝置。

XAudio2 音訊效果

本主題涵蓋 XAudio2 音訊效果,這些效果會採用傳入音訊資料,並在傳遞資料之前對資料執行一些作業 (例如殘響效果)。

使用 XAudio2 串流音訊資料

本主題涵蓋使用 XAudio2 的音訊串流。

X3DAudio

本主題涵蓋 X3DAudio,這是與 XAudio2 搭配使用的 API,用來建立來自 3D 空間點的聲音錯覺。

XAudio2 程式設計參考

本節包含 XAudio2 API 的完整參考。

XAudio2「操作說明」資源

主題 說明

操作說明:初始化 XAudio2

瞭解如何建立 XAudio2 引擎的執行個體,以及建立主控聲音,以初始化 XAudio2 進行音訊播放。

操作說明:在 XAudio2 中載入音訊資料檔案

瞭解如何填入在 XAudio2 中播放音訊資料所需的結構。

操作說明:使用 XAudio2 播放音效

瞭解如何在 XAudio2 中播放先前載入的音訊資料。

操作說明:使用子混合聲音

瞭解如何設定一組聲音,以將其輸出傳送至相同的子混合聲音。

操作說明:使用來源聲音回撥

瞭解如何使用 XAudio2 來源聲音回撥。

操作說明:使用引擎回撥

瞭解如何使用 XAudio2 引擎回撥。

操作說明:建置基本音訊處理圖形

瞭解如何建立以單一母帶聲音和單一來源聲音建構的音訊處理圖形。

操作說明:動態新增或移除音訊圖形中的聲音

瞭解如何從已建立的圖形新增或移除子混合聲音,請遵循操作說明:建置基本音訊處理圖形中的步驟。

操作說明:建立效果鏈結

瞭解如何將效果鏈結套用至聲音,以允許自訂處理該聲音的音訊資料。

操作說明:建立 XAPO

瞭解如何實作 IXAPO 來建立 XAudio2 音訊處理物件 (XAPO)。

操作說明:將執行階段參數支援新增至 XAPO

瞭解如何藉由實作 IXAPO 參數介面,將執行階段參數支援新增至 XAPO。

操作說明:在 XAudio2 中使用 XAPO

瞭解如何在 XAudio2 效果鏈結中使用實作為 XAPO 的效果。

操作說明:在 XAudio2 中使用 XAPOFX

瞭解如何在 XAudio2 效果鏈結中使用 XAPOFX 中包含的其中一個效果。

操作說明:從磁碟串流聲音

瞭解如何藉由建立個別執行緒來讀取音訊緩衝區,以及使用回撥來控制該執行緒,以串流 XAudio2 中的音訊資料。

操作說明:整合 X3DAudio 與 XAudio2

瞭解如何使用 X3DAudio 來提供 XAudio2 聲音的音量和音調值,以及 XAudio2 內建殘響效果的參數。

操作說明:將音訊方法分組為作業集

瞭解如何使用 XAudio2 作業集,讓一組方法呼叫同時生效。

在 XAudio2 中偵錯音訊問題

瞭解如何設定 XAudio2 的偵錯記錄層級。

媒體基礎資源

媒體基礎 (MF) 是用於串流音訊和視訊播放的媒體平台。 您可以使用媒體基礎 API,以各種演算法串流編碼和壓縮音訊和視訊。 它並非針對即時遊戲案例所設計;相反地,它提供功能強大的工具和廣泛的轉碼器支援,以取得更線性的擷取和呈現音訊和視訊元件。

主題 說明

關於媒體基礎

本節包含媒體基礎 API 的一般資訊,以及可支援它們的工具。

媒體基礎:基本概念

本主題介紹撰寫媒體基礎應用程式之前,您必須瞭解的一些概念。

媒體基礎架構

本節說明 Microsoft 媒體基礎的一般設計,以及其所使用的媒體基本類型和處理管線。

音訊/視訊擷取

本主題描述如何使用 Microsoft 媒體基礎來執行音訊和視訊擷取。

音訊/視訊播放

本主題描述如何在應用程式中實作音訊/視訊播放。

媒體基礎中支援的媒體格式

本主題列出 Microsoft 媒體基礎原生支援的媒體格式。 (第三方可以藉由撰寫自訂外掛程式來支援其他格式。)

編碼和檔案編寫

本主題描述如何使用 Microsoft 媒體基礎來執行音訊和視訊編碼,以及編寫媒體檔案。

Windows 媒體轉碼器

本主題描述如何使用 Windows 媒體音訊和視訊轉碼器的功能來產生及取用壓縮資料串流。

媒體基礎程式設計參考

本節包含媒體基礎 API 的參考資訊。

媒體基礎 SDK 範例

本節列出示範如何使用媒體基礎的範例應用程式。

Windows 執行階段 XAML 媒體類型

如果您正在使用 DirectX-XAML Interop,您可以使用 DirectX 搭配 C++ 將 Windows 執行階段 XAML 媒體 API 併入 UWP 應用程式,以取得更簡單的遊戲案例。

主題 說明

Windows.UI.Xaml.Controls.MediaElement

表示包含音訊、視訊或兩者的物件的 XAML 元素。

音訊、視訊和相機

瞭解如何在通用 Windows 平台 (UWP) 應用程式中納入基本音訊和視訊。

MediaElement

瞭解如何在 UWP 應用程式中播放本機儲存的媒體檔案。

MediaElement

瞭解如何在 UWP 應用程式中串流低延遲的媒體檔案。

媒體傳播

瞭解如何使用 Play To 合約,將媒體從 UWP 應用程式串流至另一個裝置。

參考