目录

Wwise SDK 2018.1.11
高级声音引擎集成

声音引擎初始化

Note: 在初始化声音引擎本身之前,必须首先初始化内存管理器和流管理器。 请参阅 初始化声音引擎的不同模块 一节了解有关全局初始化的更多信息。

初始化声音引擎本身通过调用 AK::SoundEngine::Init 函数来执行。为方便您查看,此处复制了 初始化声音引擎 中所示的默认初始化。

#include <AK/SoundEngine/Common/AkSoundEngine.h> // 声音引擎
(...)
bool InitSoundEngine()
{
(...)
//
// 对声音引擎初始化
// 使用默认初始化参数
//
{
assert( !"Could not initialize the Sound Engine." );
return false;
}
return true;
}

AK::SoundEngine::Init 函数使用 2 个参数。

第一个参数:AkInitSettings * in_pSettings

  • 此结构包含用于对声音引擎进行初始化的、与平台无关的信息。

第二个参数:AkPlatformInitSettings * in_pPlatformSettings

  • 此结构包含用于对声音引擎初始化的各平台专用信息。
Caution: 这两个参数都被视为可选,但我们强烈建议您根据游戏的需要自定义它们的值,因为默认值通常有较高的内存占用。根据游戏类型,应仔细调节内存设置。 请参阅 确定内存池的合适大小 一节了解更多信息。

自定义创建参数

AkInitSettingsAkPlatformInitSettings 结构必须使用 AK::SoundEngine::GetDefaultInitSettingsAK::SoundEngine::GetDefaultPlatformInitSettings 函数初始化。

使用这两个函数对结构进行初始化将在结构中填充默认参数。这一功能非常有用,原因如下:

  • 一旦初始化后,就可以轻松地更改参数来满足游戏的需要。
  • 使用默认参数可确保代码向下兼容,因为 SDK 的未来版本可能会在结构中添加更多的初始化参数。

下面的例程演示如何对声音引擎的两个主要池进行初始化。

#include <AK/SoundEngine/Common/AkSoundEngine.h> // 声音引擎
(...)
bool InitSoundEngine()
{
(...)
//
// 创建声音引擎
// 使用修改后的初始化参数
//
AkInitSettings initSettings;
AkPlatformInitSettings platformInitSettings;
initSettings.uDefaultPoolSize = 4 * 1024 * 1024; // 4 MB
initSettings.uMaxNumPaths = 16;
platformInitSettings.uLEngineDefaultPoolSize = 4 * 1024 * 1024; // 4 MB
if ( AK::SoundEngine::Init( &initSettings, &platformInitSettings ) != AK_Success )
{
return false;
}
return true;
}

有关选择内存池大小的更多信息,请参阅 优化内存池