Files
XCEngine/docs/api/audio/audio-system/audio-system.md

3.3 KiB
Raw Blame History

AudioSystem

命名空间: XCEngine::Audio

类型: class (singleton)

头文件: XCEngine/Audio/AudioSystem.h

描述: 音频系统单例,管理所有音频源、音频后端和监听器状态。

概述

AudioSystem 是 XCEngine 音频模块的核心单例类负责管理整个音频子系统的生命周期。它维护音频监听器listener的 3D 变换和速度信息注册和管理所有活动的音频源AudioSourceComponent并通过配置的 IAudioBackend 实现进行实际的音频输出。AudioSystem 每帧调用 Update 方法处理音频源的 3D 空间化计算和混音。

单例访问

方法 描述
static AudioSystem& Get() 获取音频系统单例实例

公共方法

方法 描述
Initialize 初始化音频系统
Shutdown 关闭音频系统
Update 每帧更新音频系统状态
SetBackend 设置音频后端实现
GetBackend 获取当前音频后端
GetCurrentDevice 获取当前音频设备名称
SetDevice 设置音频设备
GetAvailableDevices 获取可用音频设备列表
GetMasterVolume 获取主音量
SetMasterVolume 设置主音量
IsMuted 检查是否静音
SetMuted 设置静音状态
ProcessAudio 处理音频数据
SetListenerTransform 设置监听器变换
SetListenerVelocity 设置监听器速度
GetListenerPosition 获取监听器位置
GetListenerRotation 获取监听器旋转
GetListenerVelocity 获取监听器速度
RegisterSource 注册音频源
UnregisterSource 注销音频源
GetStats 获取音频系统统计信息

内部方法

方法 描述
ProcessSource() 处理单个音频源的音频数据(私有)

使用示例

#include <XCEngine/Audio/AudioSystem.h>
#include <XCEngine/Audio/WindowsAudioBackend.h>

using namespace XCEngine::Audio;

void SetupAudio() {
    AudioConfig config;
    config.sampleRate = 48000;
    config.channels = 2;
    config.bitsPerSample = 16;
    config.speakerMode = SpeakerMode::Stereo;
    
    AudioSystem::Get().SetBackend(std::make_unique<WASAPI::WASAPIBackend>());
    AudioSystem::Get().Initialize(config);
}

void GameLoop(float deltaTime) {
    Math::Vector3 listenerPos = mainCamera->GetPosition();
    Math::Quaternion listenerRot = mainCamera->GetRotation();
    AudioSystem::Get().SetListenerTransform(listenerPos, listenerRot);
    AudioSystem::Get().Update(deltaTime);
}

void CleanupAudio() {
    AudioSystem::Get().Shutdown();
}

相关文档