menu
版本
2018.1.11.6987
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 2018.1.11
|
在默认情况下,Wwise 声音引擎在名为AK::EventManager
的专门线程中执行所有命令处理和音频渲染,该线程由AkPlatformInitSettings::threadLEngine 参数控制。调用 AK::SoundEngine::RenderAudio 表明游戏帧结束,线程可以处理完自上次调用 RenderAudio 以来的所有 API 命令。
将 AkInitSettings::bUseLEngineThread 设置为false
会禁止此线程,使 RenderAudio 同步执行命令处理和音频渲染(如需要)。音频输出的实际速度仍由音频终端控制。如果 RenderAudio 调用间隔时间短于 AkInitSettings::uNumSamplesPerFrame 和输出采样率确定的缓冲周期,则某些 RenderAudio 调用将跳过音频渲染部分。相反,如果 RenderAudio 调用间隔时间长于输出缓冲周期,RenderAudio 一次可能会处理多个缓冲区,造成 CPU 占用上的尖峰,并可能最终导致音频卡顿。
在禁用音频渲染线程时,不得从 RenderAudio 调用方的同一线程同步调用 AK::SoundEngine::LoadBank 和 AK::SoundEngine::UnloadBank API:这些调用可能会阻塞线程,直到能有一个音频缓冲区被渲染来完成 Stop(停止播放)操作并释放 SoundBank 媒体条件下才能解除阻塞,而如果不是并发调用 RenderAudio,则不可能等到有这种条件。
当将 AkInitSettings::bUseLEngineThread
设定为False时(这种情况是因为STA的使用),CoInitializeEx()需要从调用 AK::SoundEngine::Render()
的线程中调用。
在默认情况下,Wwise 声音引擎会在音频渲染线程中执行 Bus(总线)和 Voice(声部)处理。
您可以通过 AkInitSettings::taskSchedulerDesc 来并行处理各项 Bus 和 Voice 任务。Wwise 会针对任意一组可安全并发执行的任务调用 AkTaskSchedulerDesc::fcnParallelFor 回调。此请求可传给游戏端任务计划程序,以此为各个工作线程指派执行范围。