如何:使用引擎回调
可以通过向 XAudio2 引擎注册实现 IXAudio2EngineCallback 接口的类的实例来通知引擎事件的 XAudio2 客户端代码。 这样,XAudio2 客户端代码就可以跟踪何时进行音频处理,以及何时在发生严重错误时重启引擎。
使用引擎回调
以下步骤注册对象以处理引擎事件。
创建从 IXAudio2EngineCallback 接口继承的类。
IXAudio2EngineCallback 的所有方法都是纯虚拟的,必须进行定义。 此示例中感兴趣的方法是 IXAudio2EngineCallback::OnCriticalError,它设置一个标志来指示main游戏循环发生了严重错误。 在此示例中,其余方法 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 );
相关主题