61 lines
		
	
	
		
			837 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			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();
 | |
| }
 |