3.3 KiB
3.3 KiB
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();
}
相关文档
- Audio 模块总览 - Audio 模块总览
- IAudioBackend - 音频后端接口
- AudioConfig - 音频配置