61 lines
		
	
	
		
			848 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			848 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;
 | |
| 	}
 | |
| }
 | |
| 
 | |
| e2d::Audio::Audio()
 | |
| 	: x_audio2_(nullptr)
 | |
| 	, mastering_voice_(nullptr)
 | |
| {
 | |
| 	::CoInitialize(nullptr);
 | |
| 
 | |
| 	ThrowIfFailed(
 | |
| 		XAudio2Create(&x_audio2_, 0)
 | |
| 	);
 | |
| 
 | |
| 	ThrowIfFailed(
 | |
| 		x_audio2_->CreateMasteringVoice(&mastering_voice_)
 | |
| 	);
 | |
| }
 | |
| 
 | |
| e2d::Audio::~Audio()
 | |
| {
 | |
| 	if (mastering_voice_)
 | |
| 	{
 | |
| 		mastering_voice_->DestroyVoice();
 | |
| 		mastering_voice_ = nullptr;
 | |
| 	}
 | |
| 
 | |
| 	SafeRelease(x_audio2_);
 | |
| 
 | |
| 	::CoUninitialize();
 | |
| }
 | |
| 
 | |
| IXAudio2 * e2d::Audio::GetXAudio2()
 | |
| {
 | |
| 	return x_audio2_;
 | |
| }
 | |
| 
 | |
| IXAudio2MasteringVoice * e2d::Audio::GetMasteringVoice()
 | |
| {
 | |
| 	return mastering_voice_;
 | |
| }
 |