- 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
63 lines
1.6 KiB
C
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);
|