Вопросы FMOD Studio. Основные понятия, лучшие практики и т. д.

У меня есть пара вопросов, так как я пытаюсь интегрировать FMOD Studio в один из своих проектов.

Несмотря на то, что я получил проект, воспроизводящий аудиофайлы, в примере кода, представленном в документации, остались некоторые вещи, касающиеся предполагаемого использования. Поскольку я новичок в FMOD, я нахожу эти концепции в API несколько неуловимыми для понимания.

Кто-нибудь знает, существуют ли какие-либо рекомендации относительно лучших практик при использовании API.

Где я могу найти дополнительную информацию о предполагаемом использовании FMOD::EventInstances и связанных интерфейсов/классов для воспроизведения звука. В основном, какова моя ответственность при использовании ресурса и о чем заботится FMOD с точки зрения управления памятью и т. д.

Как вы должны отслеживать FMOD::ID/GUID для каждого типа события. Нужно ли мне вручную составлять список активов для каждого события с соответствующим GUID и определять их для моей команды? Является ли лучший динамический способ сделать это? (на ум приходит std::map или аналогичная функциональность).


person Tobias Lundstrom    schedule 02.05.2014    source источник


Ответы (1)


Вы должны выпустить() любые EventInstances, когда закончите с ними. Если ваше звуковое событие является ваншотом, вы можете выпустить его сразу после того, как начнете его воспроизводить, и оно автоматически выпустится после завершения воспроизведения звука. например:

Studio::EventInstance* instance;
if (FMOD_ErrorCheck(_eventDescription->createInstance(&instance)))
{
    FMOD_ErrorCheck(instance->start());
    FMOD_ErrorCheck(instance->release());
}

Если вы хотите сохранить дескриптор звукового события, чтобы вы могли продолжать его воспроизводить, вам, вероятно, следует просто сохранить дескриптор EventDescription и создавать новые экземпляры EventInstance каждый раз, когда вы хотите его воспроизвести.

Если вы этого не сделаете и сохраните EventInstance, то запуск звука будет обрезать звук и перезапускать его каждый раз, когда вы пытаетесь его воспроизвести.

Если вы не хотите вести список руководств FMOD, вы можете загрузить файл Master Bank.strings.bank (или как называется ваш файл .strings.bank), сгенерированный FMOD Studio. Затем вы можете найти FMOD:ID из строки следующим образом:

Studio::ID AudioManager::getEntityId(std::string path)
{
    Studio::ID id = {0};
    FMOD_ErrorCheck(_studioSystem->lookupID(path.c_str(), &id));
    return id;
}

(предполагается, что _studioSystem является вашим указателем FMOD::Studio::System*)

Таким образом, вашей команде никогда не придется думать об идентификаторах событий, а только о строках пути к событию. Вы можете получить путь к конкретному событию, щелкнув его правой кнопкой мыши в FMOD Studio и выбрав Копировать путь.

person Buzzrick    schedule 24.07.2014