menu
版本
2024.1.4.8780
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
2024.1.4.8780
2023.1.12.8706
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
Wwise SDK 2024.1.4
|
以下各节列举并阐述了 2023.1.8 和 2024.1 版本之间针对 Wwise 所作的改进。
此处提供了有关平台的特定信息:
有关早期版本的信息,请参阅 过往版本的发行说明 章节。
ak.wwise.core.profiler.getMeters
、ak.wwise.core.profiler.registerMeter
和 ak.wwise.core.profiler.unregisterMeter
以便从 Profiler 检索电平表数据。AkMemoryArena
作为默认内存分配器。它产生的内存用量和碎片与大多数通用内存分配器(如 TLSF)相当,同时还允许通过按需预留内存来实现资源的动态扩展。跟之前的默认内存分配器 (rpmalloc) 相比,在很多情况下都可将内存用量降低约 10。跟将 AkMemSettings::uVMSpanCount
设为 AkSpanCount_Small
时相比,预留内存的水印也略有改善;跟将 AkMemSettings::uVMSpanCount
设为 AkSpanCount_Huge
时相比,则有显著改善;同时,很少需要调用外部内存分配挂钩。另外,还将之前用于提供内存的回调由 AkMemSettings::pfAllocVM
和 AkMemSettings::pfFreeVM
更新为了 AkMemoryArenaSettings::fnMemAllocSpan
和 AkMemoryArenaSettings::fnMemFreeSpan
。它们跟之前回调的功能差不多,不过实现起来更加简单。因为其对所提供内存的对齐方式并没有严格的要求,而且只需分配和释放底层部分的内存,无需考虑单独映射物理和虚拟内存。比如,在 Windows 和 POSIX 平台上,AkMemoryArenaSettings::fnMemAllocSpan
和 AkMemoryArenaSettings::fnMemFreeSpan
的默认实现现在可直接调用 std::malloc
和 std::free
来获取和释放所需内存(不需要调用 mmap
和 munmap
)。各项内存分配和释放操作的现有回调仍然可用并保持不变。不过,建议最好试着改用新的默认内存分配器,因为现在有了更多的性能分析信息和配置。AkMemoryArenaSettings::fnMemAllocSpan
回调时提供的 UserData 值。AkSpatialAudioInitSettings::uMaxReflectionPaths
负责设置最多允许存在多少条经过验证的反射路径。借助启发式计算,系统会对所有潜在路径进行排序,然后确定哪些路径最为突出。在针对所有发声体全局查找 AkSpatialAudioInitSettings::uMaxReflectionPaths
后,将不再做任何路径计算。AK::SoundEngine::PrepareBus
函数。借助此函数,可管理总线上的效果器插件的媒体加载和卸载,而无需将媒体打包到 User-defined SoundBank 中。ak.wwise.core.blendContainer
前缀。同时,为 ak.wwise.core.object.get
函数添加了 WAAPI blendTracks
访问器。panner
访问器以便通过定位来检索声像摆位器对象。ak_wwise_ui_commands_execute
新增了 OpenRecycled
命令。该命令可直接打开对象,而不创建新的窗口选项卡。AkSpatialAudioInitSettings::fMaxDiffractionAngleDegrees
,可指定可能的最大衍射角度。若超过此角度,则不计算传播路径并且不可闻。SetMaxReflectionPaths
函数,以便设置最多可有多少条反射路径。ak.wwise.core.audio.convert
和 ak.wwise.core.audio.setConversionPlugin
函数。AK::IAkLowLevelIOHook
接口中移除了 BatchCancel()
。AK::Query::GetRTPCValue
不再阻塞。UnsetMedia
函数。请改用 TryUnsetMedia
。PluginServiceType_TempAlloc
插件服务,以便于插件利用 Temp Alloc 和 Bookmark Allocator 内存分配系统。同时,将与 Temp Alloc 和 Bookmark Allocator 相关的公共函数和结构从 AkMemoryMgr.h
移到了新的头文件 AkTempAllocDefs.h
。为此,可能需要更新有些文件包含项。–no-wwise-dat
命令行参数。不再生成 wwise.dat
文件。AkAudioObject
和 AkAudioObjects
从 AkCommonDefs.h
移到了 AkAudioObject.h
。对于使用这些类型的插件,可能需要更新包含的头文件。同时从 AkCommonDefs.h
中移除了 IAkPluginMemAlloc.h
、AkArray.h
和 AkString.h
的其他间接头文件包含项。这些头文件包含项可能也要更新。AK::Wwise::Plugin::PropertySet
服务。其包含 AK::Wwise::Plugin::V2::PropertySet::OpenBraces
、AK::Wwise::Plugin::V2::PropertySet::CloseBraces
和 AK::Wwise::Plugin::V2::PropertySet::GetOpenedBraces
。不过并未移除版本 1 中的函数,所以 API 与先前版本完全兼容。虽然未对 ak_wwise_plugin_host_object_store_v1 做任何更改,但更新了 AK::Wwise::Plugin::ObjectStore
C++ 封装类以同时兼容两个版本。AkGeometryInstanceParams::RoomID
。AkMemSettings::bEnableSeparateDeviceHeap
。现在可通过将 AkMemoryArenaSettings::fnMemAllocSpan
和 AkMemoryArenaSettings::fnMemFreeSpan
设为 nullptr
来禁用 Device AkMemoryArena
。AkMemSettings::uMemAllocationSizeLimit
。现在每个 AkMemoryArena 都有自己的预留限值 AkMemoryArenaSettings::uMemReservedLimit
。AK_PERF_RECORDING
宏。AK::SoundEngine::ResetRTPCValueByPlayingID
。AkInitSettings::bOfflineRendering
成员允许在初始化时实施离线渲染。AK::SpatialAudio::SetMaxDiffractionPaths
。SetMaximumReflectionPaths
重命名为了 SetMaxGlobalReflectionPaths
。同时,将 uMaxReflectionPaths
重命名为了 uMaxGlobalReflectionPaths
。IAkMixerPluginContext
接口添加了 RegisterAnonymousConfig
和 UnregisterAnonymousConfig
方法,以便在 ComputePositioning
中自定义扬声器配置。AkRoomParams::RoomPriority
由 AkUInt32 改为了 AkReal32。PrepareEvent()
现在可为 Actor-Mixer Hierarchy 和 Interactive Music Hierarchy 中的对象预备插件媒体。AK_EnableBusMeter_KPower
,现在整条总线只会调用一次总线电平测量回调。若将 AkMeteringFlags
设为别的值,则每个 Audio Object 都会调用一次。AK BusTask
作业在开始执行前不再依赖于 CAkLEngine::PostRunVpls
作业。这样在完成 AK SwVoice
和 AK HwVoice
作业后会继续运行作业辅助函数。如此一来,便可缩短声音引擎时钟周期的总体挂钟时间。AkPlacementNew
从 AkObject.h
移到了新的文件 AkPlacementNew.h
。对于使用这些类型的插件,可能需要更新包含的头文件。AK::SoundEngine::SetScalingFactor
API 产生的影响。ak.wwise.core.transport.stateChanged
WAAPI 通知。AkVariantBase.h
出现内存泄漏。UnregisterGameObject
会导致无法听到反射声。IAkMap::GetNextAssoc
时发生崩溃。PrepareEvent
后可能会出现堆栈溢出。PrepareEvent
、PrepareGameSync
、PrepareBank
、LoadBank
)和 Unprepare 函数(UnprepareEvent
、UnprepareGameSync
、UnprepareBank
、UnloadBank
),否则可能会发生崩溃。比如,在依次调用 LoadBank
、PrepareEvent
、UnloadBank
、UnprepareEvent
时就可能发生崩溃。PinEventInStreamCache
/ UnpinEventInStreamCache
调用失衡会导致在终止声音引擎时发生死锁。ak.soundengine.seekOnEvent
时出现错误。ak.wwise.core.soundbank.generate
都会为 Auto-defined SoundBank 返回不同的 GUID。AkVariantBase.h
中有执行不到的代码。AkMemoryArena
,并在 AkMemoryArena 的配置和调整 中添加了有关 AkMemoryArena
本身的文档。