- Rename constructor/destructor files to follow template spec: - ctor.md → constructor.md, dtor.md → destructor.md (audioclip) - texture_constructor.md → constructor.md, texture_destructor.md → destructor.md (texture) - material-loader-constructor.md → constructor.md, material-loader-destructor.md → destructor.md - Create missing constructor/destructor docs: - audio-loader: constructor.md, destructor.md - texture-loader: constructor.md, destructor.md - Fix broken links to ResourceManager: - shader-loader/index.md - material-loader/index.md - Remove duplicate folders (keep hyphenated versions): - Delete shaderloader/ (keep shader-loader/) - Delete resourcepackage/ (keep resource-package/) - Merge textureimportsettings/ into texture-import-settings/ - Rename audio-loader method files: - canload.md → can-load.md - getdefaultsettings.md → get-default-settings.md - getsupportedextensions.md → get-supported-extensions.md - Update overview pages with proper method links and constructor/destructor entries
4.4 KiB
4.4 KiB
AudioClip
命名空间: XCEngine::Resources
类型: class
头文件: XCEngine/Resources/AudioClip.h
描述: 音频片段资源类,管理音频样本数据、格式信息和播放参数。
概述
AudioClip 是 XCEngine 中的音频资源类,继承自 IResource。它管理音频的原始样本数据、采样率、通道数、位深度、时长、格式类型和播放参数。
头文件
#include <XCEngine/Resources/AudioClip.h>
枚举类型
AudioFormat
音频格式枚举。
| 值 | 描述 |
|---|---|
Unknown |
未知格式 |
WAV |
WAV 格式 |
OGG |
OGG Vorbis 格式 |
MP3 |
MP3 格式 |
FLAC |
FLAC 无损格式 |
AudioType
音频类型枚举。
| 值 | 描述 |
|---|---|
SoundEffect |
音效 |
Music |
音乐 |
Voice |
语音 |
Ambient |
环境音 |
公共方法
构造与析构
| 方法 | 描述 |
|---|---|
| AudioClip | 默认构造函数 |
| ~AudioClip | 析构函数 |
基础属性
| 方法 | 描述 |
|---|---|
ResourceType GetType() const |
返回 ResourceType::AudioClip |
const Containers::String& GetName() const |
获取音频名称 |
const Containers::String& GetPath() const |
获取音频路径 |
ResourceGUID GetGUID() const |
获取全局唯一标识符 |
| IsValid | 检查音频是否有效 |
| GetMemorySize | 获取内存大小 |
| Release | 释放音频引用 |
音频数据
| 方法 | 描述 |
|---|---|
| SetAudioData | 设置音频数据(需先设置采样率、通道数、位深度,自动计算时长) |
| GetAudioData | 获取音频数据指针 |
音频参数
| 方法 | 描述 |
|---|---|
| SetSampleRate | 设置采样率(Hz) |
| GetSampleRate | 获取采样率 |
| SetChannels | 设置通道数(1=单声道, 2=立体声) |
| GetChannels | 获取通道数 |
| SetBitsPerSample | 设置位深度(8/16/24/32) |
| GetBitsPerSample | 获取位深度 |
| SetDuration | 设置时长(秒) |
| GetDuration | 获取时长(秒) |
格式与类型
| 方法 | 描述 |
|---|---|
| SetAudioFormat | 设置音频格式 |
| GetAudioFormat | 获取音频格式 |
| SetAudioType | 设置音频类型 |
| GetAudioType | 获取音频类型 |
3D 和循环
| 方法 | 描述 |
|---|---|
| SetIs3D | 设置是否为 3D 音频 |
| Is3D | 检查是否为 3D 音频 |
| SetLoop | 设置是否循环播放 |
| IsLoop | 检查是否循环播放 |
RHI 资源
| 方法 | 描述 |
|---|---|
| GetRHIResource | 获取 RHI 音频缓冲区 |
| SetRHIResource | 设置 RHI 音频缓冲区 |
实现说明
注意:
AudioLoader::Load()加载 WAV 文件时仅设置格式,不解析 WAV 头信息来设置采样率、通道数和位深度。这些字段需要手动设置或通过SetAudioData()的自动计算(需先设置m_sampleRate、m_channels、m_bitsPerSample)。AudioLoader::ParseWAVData()为 stub,始终返回 true。AudioLoader::DetectAudioFormat()不检测 AIFF/AIF 格式的文件头,仅依赖扩展名判断。
使用示例
#include <XCEngine/Resources/AudioClip.h>
#include <XCEngine/Resources/ResourceManager.h>
using namespace XCEngine::Resources;
// 加载音频
ResourceHandle<AudioClip> sfx = ResourceManager::Get().Load<AudioClip>("sounds/explosion.wav");
ResourceHandle<AudioClip> music = ResourceManager::Get().Load<AudioClip>("music/background.ogg");
// 设置参数
sfx->SetAudioType(AudioType::SoundEffect);
sfx->SetSampleRate(44100);
sfx->SetChannels(2);
sfx->SetBitsPerSample(16);
sfx->SetDuration(1.5f);
sfx->SetLoop(false);
// 3D 音频
sfx->SetIs3D(false);
music->SetIs3D(false);
// 获取信息
uint32_t sampleRate = sfx->GetSampleRate();
float duration = sfx->GetDuration();
bool loop = sfx->IsLoop();
相关文档
- IResource - 资源基类
- ResourceManager - 资源管理器
- Resources 总览 - 返回模块总览