示例#1
0
bool Player::SetSound(Sound& sound)
{
	AudioDesc = sound.DataDescription();
	if (FAILED(AudioDriver->CreateSourceVoice(&AudioSVoice, &AudioDesc)))
		return false;

	AudioBuffer.LoopBegin = 0;
	AudioBuffer.LoopCount = 0;
	AudioBuffer.LoopLength = 0;
	AudioBuffer.pContext = nullptr;
	AudioBuffer.PlayBegin = 0;
	AudioBuffer.PlayLength = 0;
	AudioBuffer.Flags = XAUDIO2_END_OF_STREAM;
	AudioBuffer.AudioBytes = sound.Size();
	AudioBuffer.pAudioData = sound.Data();

	if (FAILED(AudioSVoice->FlushSourceBuffers()))
		return false;

	if (FAILED(AudioSVoice->SubmitSourceBuffer(&AudioBuffer)))
		return false;

	return true;
}