バージョン
menu_open
Wwise SDK 2018.1.11
オーディオレンダリングのカスタムスケジューリング

Audio Rendering Thread

デフォルトでは、Wwiseサウンドエンジンは専用のスレッド AK::EventManager で、AkPlatformInitSettings::threadLEngine パラメータが制御しながらすべてのコマンド処理とオーディオレンダリングを行っています。AK::SoundEngine::RenderAudio シグナルをゲームフレームの最後で呼び出し、先のRenderAudioの呼び出しからのすべてのAPIコマンドを消費するスレッドを可能にします。

必要であれば AkInitSettings::bUseLEngineThreadfalse を設定することでこのスレッドを無効にし、RenderAudio がコマンド処理とオーディオレンダリングを同時に行うようにすることもできます。オーディオ出力の実際のレートは、オーディオエンドポイントが引き続き制御します。RenderAudio 呼び出しの間隔がAkInitSettings::uNumSamplesPerFrame で定めたバッファ期間、および出力サンプルレートよりも短い場合には、ある RenderAudio の呼び出しはオーディオレンダリングの部分を省略します。逆に、RenderAudio の呼び出し間隔が出力バッファ期間よりも長い場合には、RenderAudio は複数のバッファを一度の処理し、これがCPU使用量の急激な上昇まねき、最終的に再生されるオーディオが途切れる現象を引き起こす可能性があります。

オーディオレンダリングスレッドを無効にする場合には、同期 AK::SoundEngine::LoadBankAK::SoundEngine::UnloadBank API の呼び出しは、RenderAudioの呼び出しとして同じスレッドから 行ってはなりません: これらの呼び出しは、オーディオバッファがレンダーされ Stop 処理が完了し、SoundBankメディアが解放されるまでブロックされ、RenderAudioへの同時呼び出し無しには発生しません。

AcInitSettings::bUseLEngineThreadをfalseに設定するときは、\ c AK::SoundEngine::Render()を呼び出すスレッドからCoInitializeEx()を呼び出す必要があります(これはSTAの使用のためです)。

オーディオレンダリングタスクのパラレル実行

デフォルトで、Wwiseサウンドエンジンはバスやボイスの処理をオーディオレンダリングスレッドで実行します。

個別のバスタスクやボイスタスクのパラレル実行を、AkInitSettings::taskSchedulerDescで有効にできます。WwiseがAkTaskSchedulerDesc::fcnParallelForコールバックで、同時に安全に実行できるタスクのグループをコールします。このリクエストは、ゲーム側のタスクスケジュラーに送られ、複数のワーカースレッドに実行が分割されます。

覚え書き
パラレル実行を有効にすると、同時タスクスケジュラースレッドから、いくつかのAK::SoundEngineコールバックが生成されます。
パラレル実行に対応していないプラグインもあります。

このページはお役に立ちましたか?

サポートは必要ですか?

ご質問や問題、ご不明点はございますか?お気軽にお問い合わせください。

サポートページをご確認ください

あなたのプロジェクトについて教えてください。ご不明な点はありませんか。

プロジェクトを登録していただくことで、ご利用開始のサポートをいたします。

Wwiseからはじめよう