время умываться! |
[Aug. 21st, 2018|12:47 am] |
почистил и немного перепилил звуковую подсистему. в оригинале она была более-менее тупо выдернута из вавума и безжалостно кастрирована. из-за чего не имела некоторого нужного API, имела некоторый ненужный API, всякие заточки на какие-то бэкэнды кроме OpenAL, и требовала постоянного вызова `UpdateSounds()` в главном потоке.
а раз игра более-менее уже рабочая, то самое время заняться мелкой косметической чисткой. xmp-lite в качестве плеера модулей я привинтил ещё с месяц назад, и музыку вынес в отдельный поток. а теперь повыкидывал остатки неиспользуемых ошмётков, дописал в интерфейсный файл кратенькую документацию, перенёс апдейтер в отдельный поток, чтобы больше не дёргать его руками, и добавил кучу API для управления всякой фигнёй, которая внутри кода была, но в вавумси не торчала. заодно докинул опус-декодер.
итого, саундсистема теперь умеет играть звуки (и музыку) в формате wav pcm, flac, vorbis, opus, mp3 (via libmad), и дополнительно только музыку в модульном формате (.xm, .it, .s3m — короче, всё, что умеет xmp-lite). надо будет потом ещё привинтить бэкэнды для nukedopl, wildmidi, timidity и fluidsynth.
а потом, наверное, перетащить это назад в вавум и унифицировать с vccrun.
OpenAL, вдобавок ко всем прочим прелестям, ещё и потокобезопасный. рулит, педалит, суперофигенен. настоятельно всем рекомендую в качестве звукового бэкэнда всегда брать OpenAL и не парить себе мозги ерундой. жаль, что столько времени он как-то проходил мимо меня. |
|
|