FMOD заканчивается каналов, FMOD_CHANNEL_FREE, кажется, не работает - PullRequest
3 голосов
/ 02 июня 2011

Я инициализирую FMOD с 32 каналами и играю короткие сэмплы (1 секунда) со следующим кодом:

result = system->init(32, FMOD_INIT_NORMAL , NULL);
// here I load the sounds //
result = system->playSound(FMOD_CHANNEL_FREE, grid[_sound], false, &channel);

Он работает так, как задумано, перекрывая звуки, но теперь я понял, что когда я проиграл 32 сэмпла (не одновременно), одновременно может воспроизводиться только один звук. Похоже, что FMOD_CHANNEL_FREE ведет себя как инкрементный счетчик, и когда он достигает 32, он остается там, останавливая последний звук, пока он еще играет, чтобы воспроизвести новый.

Нужно ли удалять звуки, когда они перестали играть? Как? Я чувствую, что мне не хватает чего-то простого

Спасибо!

Марк

Ответы [ 3 ]

3 голосов
/ 12 ноября 2011

У меня была такая же проблема. Оказывается, я забыл назвать system->update() каждый кадр. Как только я вставил это, все заработало нормально.

0 голосов
/ 02 декабря 2013

Можете ли вы проверить, что вы инициализируете систему fmod с несколькими максимальными каналами? попробуйте использовать следующий код для инициализации вашей системы fmod:

    System->init(32, FMOD_INIT_NORMAL, 0);

или вы забыли позвонить

    System->Update();
0 голосов
/ 03 июня 2011

Похоже, что каналы все еще воспроизводятся (но без звука), можете ли вы проверить Channel :: isPlaying и посмотреть, продолжают ли они работать?

Возможно, опубликуйте еще немного вашего кода, если это не поможет.

...