Magic_Game/core/modules/Audio.cpp

47 lines
657 B
C++
Raw Normal View History

2018-09-05 13:17:07 +08:00
#include "..\e2dmodule.h"
2018-09-02 14:30:48 +08:00
2018-09-30 14:54:43 +08:00
e2d::Audio * e2d::Audio::Get()
2018-09-02 14:30:48 +08:00
{
2018-09-30 14:54:43 +08:00
static Audio audio;
return &audio;
2018-09-02 14:30:48 +08:00
}
e2d::Audio::Audio()
2018-09-04 22:42:34 +08:00
: x_audio2_(nullptr)
, mastering_voice_(nullptr)
2018-09-02 14:30:48 +08:00
{
::CoInitialize(nullptr);
ThrowIfFailed(
2018-09-04 22:42:34 +08:00
XAudio2Create(&x_audio2_, 0)
2018-09-02 14:30:48 +08:00
);
ThrowIfFailed(
2018-09-04 22:42:34 +08:00
x_audio2_->CreateMasteringVoice(&mastering_voice_)
2018-09-02 14:30:48 +08:00
);
}
e2d::Audio::~Audio()
{
2018-09-04 22:42:34 +08:00
if (mastering_voice_)
2018-09-02 14:30:48 +08:00
{
2018-09-04 22:42:34 +08:00
mastering_voice_->DestroyVoice();
mastering_voice_ = nullptr;
2018-09-02 14:30:48 +08:00
}
2018-09-04 22:42:34 +08:00
SafeRelease(x_audio2_);
2018-09-02 14:30:48 +08:00
::CoUninitialize();
}
2018-09-04 22:42:34 +08:00
2018-09-30 14:54:43 +08:00
IXAudio2 * e2d::Audio::GetXAudio2() const
2018-09-04 22:42:34 +08:00
{
return x_audio2_;
}
2018-09-30 14:54:43 +08:00
IXAudio2MasteringVoice * e2d::Audio::GetMasteringVoice() const
2018-09-04 22:42:34 +08:00
{
return mastering_voice_;
}