Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы можете уведомить клиентский код XAudio2 о событиях подсистемы, зарегистрируя экземпляр класса, реализующего интерфейс IXAudio2EngineCallback с подсистемой 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 );
Связанные разделы
-
Руководство по программированию XAudio2