Wwise SDK 2019.2.15
|
Wwiseサウンドエンジンのすべてのモジュールは、AK::MemoryMgr インターフェイスを介してメモリにアクセスします。サウンドエンジンクライアントによって、このインターフェイスの初期化および終了が行われます。
デフォルト実装は、静的ライブラリ(AkMemoryMgr.lib)としてSDKで提供されています。このライブラリを使うには、クライアントは、 AkModule.h ヘッダを含めて、 AK::MemoryMgr::Init の初期化関数をコールする必要があります。
AkMemoryMgr.libとその他ライブラリの使用に関する詳細は ビルド構成 を参照してください。
デフォルト実装では、デフォルトの初期化設定を AK::MemoryMgr::GetDefaultSettings を使い取得できます。
Memory Managerによって割り当てられるバーチャルメモリやデバイスメモリの合計を制限するには、以下の設定を使います:
デバグ用のアロケーションをトラッキングするには、以下の設定を使います(リリース用コンフィギュレーションでは、これらはコールされません):
上記のデバグ関数は、下記の実際のアロケーション関数を置き換えるものではなく、様々なメモリアロケーションイベントの、通知コールバックです。
以下を使えば、rpmallocを使ったデフォルト実装をオーバーライドし、カスタムアロケータを設定できます。
上記のアロケーション関数が、 AkMemType_Device ビットを尊重し、ビットが設定されたらデバイスメモリを返すことが重要です。デバイスのメモリアロケーションは、一部のプラットフォームでしか使われていなく、具体的なパラメータに準拠する必要があるので、詳しくはプラットフォーム別のセクションを参照してください。
PS5では、デバイスメモリページを追加フラグで保護して返すことが重要です。PS5で正しくデバイスメモリアロケーション関数を実装する方法については、 メモリマッピング要件 を参照してください。
Xbox Oneでは、APU関数でアロケーションしたメモリページを返すことが重要です。Xbox Oneで正しくデバイスメモリアロケーション関数を実装する方法については、 APU メモリ を参照してください。
Xbox Series Xでは、APU関数でアロケーションしたメモリページを返すことが重要です。Xbox Series Xで正しくデバイスメモリアロケーション関数を実装する方法については、 APU メモリ を参照してください。
以下を使えば、rpmallocの根底にあるページアロケーション方式をオーバーライドできます:
rpmallocをオーバーライドするために、カスタムアロケータを設定した場合は、上記関数はコールされません。デバイスのメモリアロケーションは、一部のプラットフォームでしか使われていなく、具体的なパラメータに準拠する必要があるので、詳しくはプラットフォーム別のセクションを参照してください。返されるメモリのアライメントが、プラットフォームの本来のアライメント(例えば、Windowsであれば64KB)に合致しない場合は、そのカスタムアライメントを、uVMPageSizeやuDevicePageSizeで指定する必要があります。
ゲームのメモリマネージャ初期化に関するサンプルコードと詳細は サンプル をご覧ください。
サウンドバンクのメモリ使用に関する詳細は、 バンクのロード を参照してください。
メモリアロケーションの最適化に関する詳細は、 メモリアロケーションの最適化 を参照してください。
クライアントは、 AK::MemoryMgr のインターフェースのカスタム化された実装を提供することができます。 AkMemoryMgr.h で定義されている関数は、すべて実装してください。 AkModule.h で定義された AK::MemoryMgr ネームスペースの関数は、メモリマネージャのデフォルト実装のためのものなので、実装する必要はありません。
AkMemSettings
の様々なアロケーション関数をオーバーライドするときと同様に、新しい AK::MemoryMgr の実装をプログラミングするときは、ビットが設定されたらデバイスメモリを返すことで、 AkMemType_Device ビットを尊重することが、重要です。デバイスのメモリアロケーションは、一部のプラットフォームでしか使われていなく、具体的なパラメータに準拠する必要があるので、詳しくはプラットフォーム別のセクションを参照してください。