Кто-нибудь пользуется Soft OpenAL? Возникла следующая ерунда:
Переходил с него на креативовский OpenAL 1.1, но как выяснилось, что большинство эффектов не работают в программном режиме (без звуковой карты с аппаратной поддержкой OpenAL), вернулся снова на Soft OpenAL.
Заменил обратно OpenAL32.lib и все заголовочные файлы, очистил и перекомпилировал проект, но почему-то экзешник не требует и не использует в зависимостях soft_oal.dll, только OpenAL32.dll.
Если кто пользуется, у вас в зависимостях экзешника присутствует данная библиотека? Боюсь, что где-то мог засесть OpenAL 1.1 :))) У меня последняя версия Soft OpenAL - 1.18.2.
OpenAL уже не торт, а был ли...
nes
> OpenAL уже не торт, а был ли...
id Tech 4 на OpenAL от Creative с поддержкой EAX HD 5. Если бы в их исходниках был eaxguid.lib для x64, я бы остался на креативовском OAL :)
Лично мне OpenAL нравится, при большом желании на нём можно выполнить вполне неплохой звуковой движок (готовый мне не нужен).
Daniil Petrov
Сколько не играл игорей использующих этот эйпи, постойнно наблюдал глюки (под виндой).
А вот с DirectSound еще ни разу.
nes
А какие глюки? Может движки корявые?
Daniil Petrov
>А какие глюки? Может движки корявые?
От щелчков и тресков, до пропадания звука.
nes
А звуковуха какая?
Daniil Petrov
Звуковухи были разные, т.к. наблюдал сие проложительное время на разных машинах.
но почему-то экзешник не требует и не использует в зависимостях soft_oal.dll, только OpenAL32.dll.
Много лет использую OpenAL Soft, и ни разу ничего не слышал про какую-то "soft_oal.dll"...
nes
Ну я только Sound Blaster`ами пользуюсь, так что никаких проблем не возникало. Хотя по возможности нужно будет протестировать.
gkv311
Идёт в составе SDK в папке bin :) это и сбило меня с толку.
P.S. Хотя их экзешники openal-info32.exe и openal-info64.exe тоже её не используют :))) зачем тогда она нужна??? Ну да ладно, хрен с ним!
Note that it is still expected to install the OpenAL redistributable provided
by Creative Labs (at http://openal.org/), as that will provide the "router"
OpenAL32.dll that applications talk to, and may provide extra drivers for the
user's system. The DLLs provided here will simply add additional devices for
applications to select from. If you do not wish to use the redistributable,
then rename soft_oal.dll to OpenAL32.dll (note: even the 64-bit DLL should be
named OpenAL32.dll). Just be aware this will prevent other system-installed
OpenAL implementations from working.
To use the 32-bit DLL, copy it from the bin\Win32 folder to the folder that
the 32-bit OpenAL32.dll router is installed in.
For 32-bit Windows, the Win32 DLL will typically go into the system32 folder.
For 64-bit Windows, the Win32 DLL will typically go into the SysWOW64 folder.
То есть если установить OpenAL от Creative Labs и кинуть soft_oal.dll в систему, то заглушка от Creative сможет подцепить soft_oal.dll как альтернативное устройство вывода (если приложение позволяет выбирать устройства).
В современном мире ставить заглушку OpenAL от Creative Labs - так себе идейка, лучше закинуть soft_oal.dll как OpenAL32.dll в папку с приложением, и быть уверенным, что для вывода используется OpenAL Soft, а не не пойми что.
Daniil Petrov
Юзай LoadLibrary( "soft_oal.dll" ) + GetProcAddress.
Тогда в рантайме сможешь переключать библиотеку и путаницы не будет.
gkv311
Т.е. её нужно переименовать в OpenAL32.dll? Во я туплю! :)))
Так и сделал, и openal-info*.exe выдал мне адекватную информацию, а то фильтры, эффекты и enum не поддерживались.
Спасибо, что ткнул носом в говно, я то я в последнее время так заработался с движком, что перестал понимать очевидное. Надо отдохнуть :)
P.S. И напоследок в двух словах не подскажешь, что за утилита makehrtf.exe и что такое hrtf вообще?
И нет ли случайно ссылки на то, как определить размер данных для загрузки файла ogg-vorbis?
Потоковое воспроизведение по примерам Creative сделал, а полностью загрузить в память не могу.
И ещё вопрос: контекст OAL никто между потоками не расшаривал? OGL довольно легко расшаривается, а вот на счёт расшаривания контекста OAL чёт не слышал :)
И ещё вопрос: контекст OAL никто между потоками не расшаривал? OGL довольно легко расшаривается, а вот на счёт расшаривания контекста OAL чёт не слышал :)
В OpenAL нет понятия shared context - то есть нельзя создать два контекста, которые переиспользуют одни и те же буферы.
С другой стороны, OpenAL не обрубает руки при попытке использовать тот же контекст из разных потоков, в противовес OpenGL на Windows/Linux (на macOS тоже можно из разных потоков переключать контекст), однако это не делает жизнь проще - операции в OpenAL считаются атомиками, но вот серия операций уже нет. Поэтому такой подход без дополнительных блокировок со стороны приложения приведёт к непредсказуемым проблемам:
http://camlorn.net/posts/april2014/shortcomings-of-openal.html
Вообще не совсем очевидно для чего использовать несколько потоков в OpenAL (непосредственно проигрывание звука и так может осуществляться из отдельного потока, созданного OpenAL библиотекой - в зависимости от её реализации), поэтому я бы не стал мучится на этом шаге и вытащил бы OpenAL и работу со звуком просто в один независимый поток.
Тема в архиве.