Files
lity3d/Engine/Audio/audio.h
T
shuiyu1123 0669d102ce feat: major engine overhaul - scene demo with lighting, sphere, ground
- Scene Demo: cube + sphere + ground plane with proper lighting
- Audio: XAudio2 dynamic loading + WAV playback
- Physics: expanded collision system
- Renderer: improved pipeline with materials
- UI: extended widget system
- VisualScript: enhanced serializer + block interactions
- ASM: optimized math/memory/profiling routines
- Window: mouse input + scroll support
2026-07-12 08:21:07 +08:00

63 lines
1.6 KiB
C

#pragma once
// ============================================================================
// audio.h - 音频系统 (XAudio2)
// ============================================================================
#include <xaudio2.h>
#include <stdint.h>
// 播放状态
typedef enum {
AUDIO_STOPPED = 0,
AUDIO_PLAYING,
AUDIO_PAUSED
} AudioState;
struct AudioSystem;
// 音频源
typedef struct {
struct AudioSystem* system;
IXAudio2SourceVoice* source;
IXAudio2Voice* mastering;
float volume;
float pitch;
int loop;
AudioState state;
uint8_t* audio_data;
uint32_t audio_size;
} AudioSource;
// 音频管理器
typedef struct AudioSystem {
IXAudio2* xaudio2;
IXAudio2MasteringVoice* mastering_voice;
} AudioSystem;
// 初始化/销毁
AudioSystem* audio_create(void);
void audio_destroy(AudioSystem* audio);
// 音频源
AudioSource* audio_source_create(AudioSystem* audio);
void audio_source_destroy(AudioSource* source);
// 播放
void audio_source_play(AudioSource* source);
void audio_source_stop(AudioSource* source);
void audio_source_pause(AudioSource* source);
void audio_source_resume(AudioSource* source);
// 音量/音调
void audio_source_set_volume(AudioSource* source, float volume);
void audio_source_set_pitch(AudioSource* source, float pitch);
void audio_source_set_loop(AudioSource* source, int loop);
// WAV加载
int audio_load_wav(AudioSource* source, const char* path);
int audio_load_wav_memory(AudioSource* source, const uint8_t* data, uint32_t size);
// 主音量
void audio_set_master_volume(AudioSystem* audio, float volume);