Magic_Game/core/Base/Audio.cpp

61 lines
837 B
C++

#include "..\e2dbase.h"
e2d::Audio * e2d::Audio::_instance = nullptr;
e2d::Audio * e2d::Audio::getInstance()
{
if (!_instance)
{
_instance = new (std::nothrow) Audio;
}
return _instance;
}
void e2d::Audio::destroyInstance()
{
if (_instance)
{
delete _instance;
_instance = nullptr;
}
}
IXAudio2 * e2d::Audio::getXAudio2()
{
return _xAudio2;
}
IXAudio2MasteringVoice * e2d::Audio::getMasteringVoice()
{
return _masteringVoice;
}
e2d::Audio::Audio()
: _xAudio2(nullptr)
, _masteringVoice(nullptr)
{
::CoInitialize(nullptr);
ThrowIfFailed(
XAudio2Create(&_xAudio2, 0)
);
ThrowIfFailed(
_xAudio2->CreateMasteringVoice(&_masteringVoice)
);
}
e2d::Audio::~Audio()
{
if (_masteringVoice)
{
_masteringVoice->DestroyVoice();
_masteringVoice = nullptr;
}
SafeRelease(_xAudio2);
::CoUninitialize();
}