使用方法:使用 XAudio2 播放音效
本主題描述在 XAudio2 中播放先前載入音訊資料所需的最小步驟。 初始化 XAudio2 (請參閱 如何:初始化 XAudio2) 並載入音訊資料 (請參閱 如何:如何:在 XAudio2) 載入音訊資料檔案 ,您可以藉由建立來源語音並將音訊資料傳遞給它來播放音效。
播放音效
依照如何:在 XAudio2 中載入音訊資料檔案中所述的步驟,填入XAUDIO2_BUFFER結構。
注意
視音訊資料的格式而定,您可能需要使用較大的資料結構,其中包含 一個使用一個包含一個其一個的顯示方式,以取代一個使用一個顯示方式 的 顯示方式。 如需詳細資訊,請參閱 「要求」 參考頁面。
在 XAudio2 引擎的實例上呼叫 IXAudio2::CreateSourceVoice 方法來建立來源語音。 語音的格式是由 在顯示于其 STRUCTUREATEX 結構中的值所指定。
IXAudio2SourceVoice* pSourceVoice; if( FAILED(hr = pXAudio2->CreateSourceVoice( &pSourceVoice, (WAVEFORMATEX*)&wfx ) ) ) return hr;
使用函式 SubmitSourceBuffer將XAUDIO2_BUFFER提交至來源語音。
if( FAILED(hr = pSourceVoice->SubmitSourceBuffer( &buffer ) ) ) return hr;
注意
應用程式仍然擁有 緩衝區 點的音訊範例資料,必須保持配置且可存取,直到音效停止播放為止。
使用 Start 函式來啟動來源語音。 由於所有 XAudio2 語音預設都會將其輸出傳送到主控語音,因此來源語音的音訊會自動變成在初始化時選取的音訊裝置。 在更複雜的音訊圖形中,來源語音必須指定其輸出應傳送到其中的語音。
if ( FAILED(hr = pSourceVoice->Start( 0 ) ) ) return hr;
Windows 市集應用程式的注意事項
我們建議您使用 智慧型指標 ,以例外狀況安全的方式管理 XAUDIO2 物件的存留期。 針對 Windows 市集應用程式,您可以使用來自 Windows 執行階段 C++ 樣板庫 (WRL) 的 ComPtr智慧型指標範本。
Microsoft::WRL::ComPtr<IXAudio2SourceVoice> SourceVoice;
HRESULT hr;
if( FAILED(hr = pXAudio2->CreateSourceVoice( &SourceVoice, (WAVEFORMATEX*)&wfx ) ) )
throw Platform::Exception::CreateException(hr);
if( FAILED(hr = SourceVoice->SubmitSourceBuffer( &buffer ) ) )
throw Platform::Exception::CreateException(hr);
if ( FAILED(hr = SourceVoice->Start( 0 ) ) )
throw Platform::Exception::CreateException(hr);
注意
在釋放 IXAudio2 物件之前,請確定已完全釋放 XAUDIO2 物件的所有智慧型指標。
相關主題
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應