Я следовал учебному пособию на веб-сайте Microsoft и создал собственную структуру классов SoundEngine и Sound, чтобы абстрагировать код в основном, однако всякий раз, когда я выполняю вызов, такой как batmanWav->play()
, он будет воспроизводить звук только в том случае, еслиЯ пишу std::cin.get()
или system("PAUSE")
Почему это?Я попытаюсь перенести это в игру, над которой уже работали, но я, очевидно, не хочу, чтобы игра прекращалась при каждом воспроизведении звука.
РЕДАКТИРОВАТЬ: меня попросили показать код, которыйимеет проблемы
int main()
{
CoInitializeEx(nullptr, COINIT_MULTITHREADED);
Sound batman("batman.wav");
Sound alien("alien.wav");
alien.play();
batman.play();
system("PAUSE");
CoUninitialize();
}
Sound.cpp
HRESULT Sound::play()
{
HRESULT hr = S_OK;
if (FAILED(hr = pSourceVoice->Start(0)))
return hr;
return hr;
}
Для каждого объекта Sound я инициализировал исходный голос, и каждый ссылается на один и тот же мастер-голос и объект IXAudio2 *pXAudio2
.Код, который я использовал для загрузки данных волнового файла, был взят прямо из документов MSDN.