Wwise SDK 2019.2.15
|
기본적으로 Wwise 사운드 엔진은 모든 명령 처리와 오디오 렌더링을 전용 스레드인 AK::EventManager
에서 처리하며, 이는 AkPlatformInitSettings::threadLEngine 매개 변수로 제어됩니다. AK::SoundEngine::RenderAudio 를 호출하면 게임 프레임의 끝 신호를 주고 해당 스레드가 이전의 RenderAudio 호출 이후의 모든 API 명령을 소비하도록 합니다.
AkInitSettings::bUseLEngineThread 를 false
로 설정하면 이 스레드를 비활성화하고, RenderAudio 가 동기식으로 명령 처리를 하게 만들며, 필요한 경우 오디오를 렌더링합니다. 실제 오디오 출력 레이트는 그대로 오디오 말단에 의해 제어됩니다. RenderAudio 호출 간격이 AkInitSettings::uNumSamplesPerFrame 에서 정의한 버퍼 시간과 출력 샘플 레이트보다 짧을 경우, 일부 RenderAudio 호출은 오디오 렌더링 부분을 건너뛸 수 있습니다. 반대로, RenderAudio 호출 간격이 출력 버퍼 시간보다 길 경우에는 RenderAudio 가 한 번에 둘 이상의 버퍼를 처리해 CPU 사용률이 갑자기 치솟을 수 있고 결국 오디오가 지직거리는 현상이 발생할 수 있습니다.
오디오 렌더링 스레드를 비활성화했을 때, 동기화된 AK::SoundEngine::LoadBank 와 AK::SoundEngine::UnloadBank API 호출은 RenderAudio 호출자와 동일한 스레드에서 처리해서는 안됩니다 .
AkInitSettings::bUseLEngineThread
를 false로 설정했을 때 CoInitializeEx() 는 AK::SoundEngine::Render()
를 호출하는 스레드에서 호출돼야 합니다. (STA를 사용하기 때문).
기본적으로 Wwise 사운드 엔진은 Bus와 Voice를 오디오 렌더링 스레드에서 처리합니다.
개별 Bus와 Voice 작업의 병렬 처리는 AkInitSettings::taskSchedulerDesc 에서 활성화할 수 있습니다. Wwise는, 안전하게 동시 실행할 수 있는 모든 작업 그룹에 대해 AkTaskSchedulerDesc::fcnParallelFor 콜백을 호출합니다. 이 요청은 게임 단의 작업 스케줄러로 전달되어, 작업자 스레드들에 걸쳐 처리 범위를 분산합니다.
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요