Files
XCEngine/docs/api/audio/audio-system/audio-system.md
ssdfasd 161a0896d5 docs: 添加 Audio 模块和 Components 模块 API 文档
- 新增 Audio 模块文档 (54 个文件)
  - AudioSystem 单例类及 20 个方法页
  - AudioMixer 混音器类及 11 个方法页
  - IAudioBackend、IAudioEffect 接口
  - FFTFilter、Reverbation、Equalizer、HRTF 效果类
  - WASAPIBackend Windows 后端
  - AudioConfig、Audio3DParams 等结构体
  - 9 个枚举类型文档
- 新增 Components 模块文档 (3 个文件)
  - AudioSourceComponent 音频源组件
  - AudioListenerComponent 音频监听器组件
- 更新 docs/api/main.md 添加模块导航
2026-03-22 01:56:16 +08:00

89 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AudioSystem
**命名空间**: `XCEngine::Audio`
**类型**: `class (singleton)`
**头文件**: `XCEngine/Audio/AudioSystem.h`
**描述**: 音频系统单例,管理所有音频源、音频后端和监听器状态。
## 概述
AudioSystem 是 XCEngine 音频模块的核心单例类负责管理整个音频子系统的生命周期。它维护音频监听器listener的 3D 变换和速度信息注册和管理所有活动的音频源AudioSourceComponent并通过配置的 IAudioBackend 实现进行实际的音频输出。AudioSystem 每帧调用 Update 方法处理音频源的 3D 空间化计算和混音。
## 单例访问
| 方法 | 描述 |
|------|------|
| `static AudioSystem& Get()` | 获取音频系统单例实例 |
## 公共方法
| 方法 | 描述 |
|------|------|
| [`Initialize`](initialize.md) | 初始化音频系统 |
| [`Shutdown`](shutdown.md) | 关闭音频系统 |
| [`Update`](update.md) | 每帧更新音频系统状态 |
| [`SetBackend`](set-backend.md) | 设置音频后端实现 |
| [`GetBackend`](get-backend.md) | 获取当前音频后端 |
| [`GetCurrentDevice`](get-current-device.md) | 获取当前音频设备名称 |
| [`SetDevice`](set-device.md) | 设置音频设备 |
| [`GetAvailableDevices`](get-available-devices.md) | 获取可用音频设备列表 |
| [`GetMasterVolume`](get-master-volume.md) | 获取主音量 |
| [`SetMasterVolume`](set-master-volume.md) | 设置主音量 |
| [`IsMuted`](is-muted.md) | 检查是否静音 |
| [`SetMuted`](set-muted.md) | 设置静音状态 |
| [`ProcessAudio`](process-audio.md) | 处理音频数据 |
| [`SetListenerTransform`](set-listener-transform.md) | 设置监听器变换 |
| [`SetListenerVelocity`](set-listener-velocity.md) | 设置监听器速度 |
| [`GetListenerPosition`](get-listener-position.md) | 获取监听器位置 |
| [`GetListenerRotation`](get-listener-rotation.md) | 获取监听器旋转 |
| [`GetListenerVelocity`](get-listener-velocity.md) | 获取监听器速度 |
| [`RegisterSource`](register-source.md) | 注册音频源 |
| [`UnregisterSource`](unregister-source.md) | 注销音频源 |
| [`GetStats`](get-stats.md) | 获取音频系统统计信息 |
## 内部方法
| 方法 | 描述 |
|------|------|
| `ProcessSource()` | 处理单个音频源的音频数据(私有) |
## 使用示例
```cpp
#include <XCEngine/Audio/AudioSystem.h>
#include <XCEngine/Audio/WASAPI/WASAPIBackend.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<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.md) - Audio 模块总览
- [IAudioBackend](../i-audio-backend/i-audio-backend.md) - 音频后端接口
- [AudioConfig](../audio-config/audio-config.md) - 音频配置