方法: エンジン コールバックの使用
IXAudio2EngineCallback インターフェイスを実装するクラスのインスタンスを XAudio2 エンジンに登録することで、XAudio2 クライアント コードにエンジン イベントを通知できます。 これにより、XAudio2 クライアント コードは、オーディオ処理がいつ発生しているか、および重大なエラーが発生した場合にエンジンを再起動するタイミングを追跡できます。
エンジン コールバックを使用するには
次の手順では、エンジン イベントを処理するオブジェクトを登録します。
IXAudio2EngineCallback インターフェイスから継承するクラスを作成します。
IXAudio2EngineCallback のすべてのメソッドは純粋に仮想であり、定義する必要があります。 この例の目的のメソッドは IXAudio2EngineCallback::OnCriticalError です。これは、重大なエラーが発生したことをメインゲーム ループに通知するフラグを設定します。 残りのメソッド IXAudio2EngineCallback::OnProcessingPassStart と IXAudio2EngineCallback::OnProcessingPassEnd は、この例のスタブです。
class EngineCallback : public IXAudio2EngineCallback { void OnProcessingPassEnd () {} void OnProcessingPassStart() {} void OnCriticalError (HRESULT Error) {} };
XAudio2Create を使用して、XAudio2 エンジンのインスタンスを作成します。
if ( FAILED(hr = XAudio2Create( &pXAudio2, 0, XAUDIO2_DEFAULT_PROCESSOR ) ) ) return hr;
IXAudio2::RegisterForCallbacks を使用してエンジン コールバックを登録します。
pXAudio2->RegisterForCallbacks( &engineCallback );
エンジン コールバックが不要な場合は、 IXAudio2::UnregisterForCallbacks を呼び出します。
pXAudio2->UnregisterForCallbacks( &engineCallback );
関連トピック