XACT のコールバック
XACT では、コールバックを使用して、XACT エンジンでオーディオまたはファイルの入出力イベントが発生したことを通知します。XACT には次の 3 種類のコールバックがあります。
- ファイルの読み込みコールバック (XACT_READFILE_CALLBACK)
- オーバーラップ処理結果の取得コールバック (XACT_GETOVERLAPPEDRESULT_CALLBACK)
- 通知コールバック (XACT_NOTIFICATION_CALLBACK)
ファイルの読み込みコールバック (XACT_READFILE_CALLBACK)
ファイルの読み込みコールバックは、システムの ReadFile 関数に似ており、これを使用すると、XACT での既定の使用をオーバーライドできます。ディスクからデータを読み込むときに、XACT エンジンは、システムの ReadFile 関数ではなく、タイトルのファイルの読み込みコールバックを呼び出します。コールバックを登録することの利点は、タイトルが XACT のディスク入力を管理して、ゲーム内のその他の I/O を含めて優先順位を付けられることです。
このコールバック関数の最も簡単な実装方法は、ReadFile を呼び出し、その値を返すことですが、この実装方法は実用的ではありません。タイトルがこのコールバックを登録するときに、読み込み処理を拡張または修正する可能性があります。
ファイルの読み込みコールバックは、XACT エンジンを初期化するときに登録されます。これには、XACT_FILEIO_CALLBACKS 構造体を設定し、その構造体に XACT_RUNTIME_PARAMETERS 構造体の fileIOCallbacks メンバーを設定します。
このコールバックのパラメーターと戻り値、および関連情報については、「XACT_READFILE_CALLBACK」を参照してください。
XACT_READFILE_CALLBACK の使用例については、「方法 : XACT 入出力コールバックの使用」を参照してください。
オーバーラップ処理結果の取得コールバック (XACT_GETOVERLAPPEDRESULT_CALLBACK)
このコールバックは、システムの GetOverlappedResult 関数に似ており、これを使用すると、XACT による既定の使用をオーバーライドできます。XACT エンジンは、ペンディング状態のオーバーラップ処理の状態を確認するとき、システムの GetOverlappedResult 関数でなく、タイトルのオーバーラップ処理結果コールバックを呼び出します。コールバックを登録することの利点は、タイトルが XACT のディスク入力を管理して、ゲーム内のその他の I/O を含めて優先順位を付けられることです。
このコールバックを最も簡単に実装する方法は、GetOverlappedResult を呼び出し、その戻り値を返すことです。
このコールバックは、XACT エンジンを初期化するときに登録されます。これには、XACT_FILEIO_CALLBACKS 構造体を設定し、その構造体に XACT_RUNTIME_PARAMETERS 構造体の fileIOCallbacks メンバーを設定します。
このコールバックのパラメーターと戻り値、および関連情報については、「XACT_GETOVERLAPPEDRESULT_CALLBACK」を参照してください。
XACT_GETOVERLAPPEDRESULT_CALLBACK の使用例については、「方法 : XACT 入出力コールバックの使用」を参照してください。
通知コールバック (XACT_NOTIFICATION_CALLBACK)
通知コールバックは、オーディオ イベントが発生したことを通知するために XACT エンジンで呼び出される関数です。通知コールバックは、XACT エンジンを初期化するときに登録されます。クライアント コードでは、XACT_NOTIFICATION_DESCRIPTION 構造体を設定して、この構造体を IXACT3Engine::RegisterNotification メソッドに渡すことによって、通知が必要なイベントを指定します。
通知の最も一般的な用途は、キューが再生を終了したことの通知と、ストリーミング Wave バンクの準備が完了したことの通知です。通知コールバックをトリガーできるイベントの一覧については、XACT_NOTIFICATION_DESCRIPTION 構造体を参照してください。
このコールバックのパラメーターと戻り値、および関連情報については、「XACT_NOTIFICATION_CALLBACK」を参照してください。
通知コールバックの使用例については、「方法 : XACT 通知コールバックの使用」を参照してください。