Openal для чего нужна эта программа

OpenAL — что это за программа? «OpenAL»: что это за программа? Для чего нужна программа «OpenAL» в windows.

Данная статья посвящена тем, кто хочет понять, что такое OpenAL. Мы постараемся доступно описать программу Опен Ал, а также примеры применения данного приложения.

Интерфейс программирования приложений OpenAL – является межплатформенной (есть версии и для Win, и для Unix) программой, позволяющей при разработке игр воссоздавать для слушателя (игрока) трёхмерную атмосферу звучания, присваивая определённым объектам звучание и рассчитывая, к примеру, расстояние до них, местоположение и прочее.

Примерный принцип работы OpenAL выглядит в виде отождествления какого-либо звука с предметом в 3D-мире игры. Т.е. передвигаясь, игрок постепенно меняет своё положение в координатной плоскости X.Y.Z., что приводит к изменению звучания (затуханию, нарастанию, смещению), сравнимого с передвижением человека в реальном мире мимо нескольких источников звука. Рендеринг звука, осуществляемый OpenAL, позволяет, например, определять расстояния до предметов, а также использовать эффект Доплера как основу для быстрой смены звукового окружения.

OpenAL — зачем нужен, как скачать и установить на Windows?

Авторы программы – Loki Software – сначала создали OpenAL (или Open Audio Library) для возможности портирования (переноса) игр с системы Win в OS Linux. Позже, когда оказалось, что проект следует закрыть, OpenAL был передан в руки любителей, добавивших в него, к примеру, поддержку для чипсета nForce от NVIDIA. В настоящее же время проектом активно занимается не только Creative Technology (активно включившаяся в разработку), но и Apple, BRS, Realtek и прочие.

Выйдя из среды открытого программного обеспечения, OpenAL сохранил в себе возможность расширения, т.е. при выходе нового ПО для звуковой карты (или новой карты) разработчики игр создают расширения, тестируют их и, в случае удачного программирования, отправляют в Creative Technology, которые в свою очередь присваивают дополнениям статус ARB и включают в новые версии. К текущей версии 2.1 было выпущено уже около двух десятков дополнений, что показывает популярность этого интерфейса у программистов. C версии 1.1 программа стала использовать закрытый исходный код, чтобы не допустить проникновения в игры вирусов под видом музыкального сопровождения, однако остальные версии с открытым кодом и по сей день используются для написания дополнений.

К примеру, Unity – среда разработки преимущественно игр для OS Android – очень плотно использует OpenAL для продвижения в создании 3D-игр. Полная реализация OpenAL в Unity позволяет игрока полностью погружаться в игру, разумеется, с использованием наушников. Игры же на Win (в большинстве случаев) используют OpenAL для создания динамического 3D-звучания – в гонках Colin McRae: DiRT или шутерах типа Battlefield или Hitman OpenAL встроен в качестве дополнения к устанавливаемым DirectX и OpenGL.

Надеюсь вы разобрались с тем, что такое Openal и как работает данный интерфейс программирования. Если у вас есть что добавить к этому, пишите в комментариях.

Для чего нужна программа OpenAL и нужно ли её удалять

OpenAL создан фирмой Loki Software как инструмент для их бизнеса — портирование игр с Microsoft Windows на GNU/Linux. После закрытия компании проект некоторое время разрабатывался сообществом свободного программного обеспечения — оно добавило функциональность звукового чипсета, встроенного в NVIDIA nForce. Сегодня проект размещён на сервере компании Creative, и по большей части разрабатывается ей.

После выхода спецификации версии 1.1 оригинальная реализация OpenAL была закрыта, вместо неё предлагается использовать проприетарную реализацию, развиваемую компанией Creative. В ответ на это сообщество свободного программного обеспечения создало собственную реализацию, основанную на сохранившихся исходных кодах исходной реализации.

Хотя хартия OpenAL гласит, что у проекта должен быть «Наблюдательный совет за архитектурой» (ARB), аналогичный проекту OpenGL Architecture Review Board (ARB), до сих пор ни одна организация не взяла на себя обязанность сформировать стандарт технических спецификаций OpenAL. Спецификации OpenAL существуют в черновом варианте, обсуждаются разработчиками по электронной почте и в общедоступных списках рассылки.

Основные функции библиотеки OpenAL — исходные объекты, аудиобуферы, и единственный слушатель. Исходные объекты включают в себя указатель на буфер, скорость, позицию, направление и интенсивность звука. Слушатель содержит скорость, позицию, направление и общее усиление звука в целом. Буферы содержат аудиоданные в формате PCM в 8-ми либо 16-битном варианте, а также в моно или стерео. Функция рендеринга звука производит необходимые вычисления, такие как определение расстояния, эффекта Доплера, и так далее.

Для конечного пользователя результат обработки этих компонентов OpenAL даёт совершенно естественное звучание при перемещении персонажей в трёхмерном виртуальном мире. А программист может легко задействовать OpenAL в своей готовой трёхмерной OpenGL-программе.

В отличие от спецификаций OpenGL, спецификации OpenAL включают в себя два API: ядро, включающее в себя вызовы функций OpenAL, и ALC (Audio Library Context) — API, используемый для управления контекстом рендеринга, контролем использования ресурсов и задействования блокировок в мультипоточных вычислениях. Также существует ALUT — библиотека, предоставляющая функции высокого уровня для упрощения написания программы, она аналогична библиотеке OpenGL Utility Toolkit (GLUT) у OpenGL.

OpenAL расширяем: программисты, либо компании, не входящие в число разработчиков OpenAL, могут добавлять в него свои расширения. Например, для того чтобы «научить» библиотеку задействовать функции своих устройств с закрытыми спецификациями. Расширения могут быть повышены до уровня ARB, то есть войти в спецификации OpenAL в её новой версии.

При запуске некоторых игр может появиться сообщение с предупреждением, что выполнение приложения невозможно по причине отсутствия компонента OpenAL32.dll. Ошибка вызвана не неправильной установкой приложения, сбоем в работе операционной системы или вследствие функционирования вредоносного ПО. Ее источником является отсутствие предустановленного в системе компонента.

Что это за файл?

OpenAL32 – ключевая динамическая библиотека, входящая в состав кроссплатформенного интерфейса для программирования в различных рабочих средах (Windows, Linux) OpenAL. Предназначен API для работы с аудио в виртуальном трехмерном пространстве и для наложения эффектов по технологии EAE, разработанной Creative Labs. Кроме специализированных звуковых плат, эта технология применима и к интегрированным аудиоплатам посредством установки драйвера для эмуляции поддержки эффектов EAE. Ныне проект закрыт, поддерживается лишь пользовательским сообществом и нередко используется при разработке компьютерных игр.

OpenAL32.dll содержит ключевые функции для обработки входящего 8- или 16-битного звука. Посредством рендеринга аудиопотока определяются ключевые параметры его звучания, необходимые для придания объемности (с учетом эффекта Допплера), и изменяются в соответствии с заданным алгоритмом. Для геймера, запустившего, например, CS 1.6, новый Doom 4, любой Battlefield и многие другие на движках Unreal Engine и iD Tech, это отразится на изменении уровня звука при перемещениях персонажей и объектов.

Избавиться от ошибки можно следующими способами.

Решение проблемы

Первым делом следует проверить карантин программы для обеспечения безопасности. Есть небольшая вероятность того, что антивирус заблокировал библиотеку, определив ее как подозрительную или вредоносную.

Ни в коем случае не ищите, где бы загрузить недостающую dll-ку бесплатно, чтобы поместить ее в system32 или в каталог с исполняемым файлом игры и зарегистрировать вручную. Это не поможет, и лишь вызовет новую ошибку.

Следующим шагом является инсталляция или переустановка OpenAL32.

  1. Кликаем по ссылке ниже, чтобы скачать архив с dll.
  2. Знакомимся с условиями эксплуатации ПО (хотя кто этим занимается, да еще на английском языке) и принимаем их.
  3. Спустя мгновение появится информационное окошко с оповещением о завершении операций копирования и регистрации библиотек в среде Windows.
  4. Закрываем окошко, кликнув «ОК».
Читайте также:
Программа 100 шагов что это

С нашего сайта компонент можете скачать для:

  • Windows 7;
  • Windows 8;
  • Windows 10.

Причем разрядность операционной системы не важна, библиотека является универсальной для всех выпусков и битностей ОС.

В крайнем случае придется обновить драйверы для звуковой платы компьютера. Последнее, что может помочь в сложившейся ситуации, это переустановка игры, ведь «кривые репаки» — основной источник подобных и множества других неполадок с играми.

Существует фантастическое множество ошибок, связанных с файлами dll. Одной из наиболее популярных среди них является ошибка, возникающая при запуске приложения и информирующая о повреждении или отсутствии файла openal32.dll. Так же ней содержится просьба переустановить проблемное приложение.

Данный файлик играет первоочередную роль в корректной работе со звуком в любых приложениях, где предполагается его наличие. Забегая вперед, отметим, что вы можете скачать openal32.dll бесплатно на нашем сайте. Ниже вы узнаете, для чего он вам понадобится.

Openal32.dll является частью пакета Open Audio Library, то есть интерфейса для обработки звука. При отсутствии файла openal32.dll, вы сильно рискуете столкнуться с множеством неудобств. Например, некоторые приложения не смогут запуститься, другие останутся без звука, будут выключаться после некоторого времени работы. Фактически подавляющее большинство игр не сможет нормально работать на вашем компьютере без этой dll-ки.

Но не стоит расстраиваться. Эта проблема устраняется очень просто. Сразу отметим, что переустанавливать приложение не нужно. Толку от этого никакого нет, а вот времени может отнять много. Гораздо эффективнее будет скачать файл openal32.dll и установить его в нужную системную папку.

Данный файл (собственно говоря, как и другие dll-ки) является универсальным. Он подходит для любой версии windows 7, 8 или windows 10 и не несет никакой опасности для вашего компьютера или ноутбука. Ни в коем случае не скачивайте dll-библиотеки с платных сайтов. В этом нет никакого смысла и пользы для вашего ПК.

Поэтому от вас потребуется совсем немного – несколько минут времени, немного терпения и готовность выполнить ряд простых действий, с которыми справится любой человек:

2. Разархивировать файл и скопировать библиотеку в буфер обмена.

3. Определить разрядность ОС. Чтобы это сделать, просто откройте «мой компьютер» и посмотрите раздел «свойства системы». В графе «тип системы» вы найдёте нужную информацию.

4. Установить библиотеку в нужную системную папку. Если у вас установлена 32-разрядная система, то устанавливайте библиотеку в C:WindowsSystem32. Если же ваша ОС 64-разрядная, то устанавливайте библиотеку в C:WindowsSysWOW64.

5. Зарегистрировать файл в системе. Для этого нажмите сочетание клавиш Win+R или в меню «пуск» нажмите «выполнить» и в возникшее окно скопируйте без кавычек команду «regsvr32 openal32.dll». После чего нажмите «ОК».

6. Перезагрузить ПК.

После чего вы сможете коротать вечера за любимым хобби.

Если же после установки dll-ки ситуация не улучшилась, то попробуйте переустановить драйвера звуковой карты. Обычно они находятся на диске, прилагавшемся в комплекте к вашему ПК.

В данном случае алгоритм тоже не сложнее чем в описанном выше способе. Вам всего лишь нужно выбрать в меню «звуковые карты», а потом всё время соглашаться с установщиком посредством нажатия кнопки «ок» или «далее». Инсталлятор все сделает автоматически. После этого вам так же будет нужно перезагрузить ваш компьютер.

Ну а если у вас что-то не получилось, посмотрите небольшое видео, прилагающееся ниже. В ней подробно показано как скачать и установить файл openal32.dll.

Если вы выполнили правильно весь перечень действий, то всё должно снова начать работать как положено. Или же возможно ваша проблема в чём-то другом.

В любом случае не поддавайтесь панике. Ошибки с файлами dll- очень распространённое явление. И в большинстве случаев проблемы с ними решаются легко и быстро даже малоопытными пользователями. Просто соблюдайте правильный порядок действий и у вас всё получится. Удачи!

Эта статья также доступна на следующих языках: Тайский

Огромное Вам СПАСИБО за очень полезную информацию в статье. Очень понятно все изложено. Чувствуется, что проделана большая работа по анализу работы магазина eBay

Спасибо вам и другим постоянным читателям моего блога. Без вас у меня не было бы достаточной мотивации, чтобы посвящать много времени ведению этого сайта. У меня мозги так устроены: люблю копнуть вглубь, систематизировать разрозненные данные, пробовать то, что раньше до меня никто не делал, либо не смотрел под таким углом зрения.

Жаль, что только нашим соотечественникам из-за кризиса в России отнюдь не до шоппинга на eBay. Покупают на Алиэкспрессе из Китая, так как там в разы дешевле товары (часто в ущерб качеству). Но онлайн-аукционы eBay, Amazon, ETSY легко дадут китайцам фору по ассортименту брендовых вещей, винтажных вещей, ручной работы и разных этнических товаров.

В ваших статьях ценно именно ваше личное отношение и анализ темы. Вы этот блог не бросайте, я сюда часто заглядываю. Нас таких много должно быть. Мне на эл. почту пришло недавно предложение о том, что научат торговать на Амазоне и eBay. И я вспомнила про ваши подробные статьи об этих торг. площ. Перечитала все заново и сделала вывод, что курсы- это лохотрон.

Сама на eBay еще ничего не покупала. Я не из России , а из Казахстана (г. Алматы). Но нам тоже лишних трат пока не надо. Желаю вам удачи и берегите себя в азиатских краях.

Еще приятно, что попытки eBay по руссификации интерфейса для пользователей из России и стран СНГ, начали приносить плоды. Ведь подавляющая часть граждан стран бывшего СССР не сильна познаниями иностранных языков. Английский язык знают не более 5% населения. Среди молодежи — побольше.

Поэтому хотя бы интерфейс на русском языке — это большая помощь для онлайн-шоппинга на этой торговой площадке. Ебей не пошел по пути китайского собрата Алиэкспресс, где совершается машинный (очень корявый и непонятный, местами вызывающий смех) перевод описания товаров. Надеюсь, что на более продвинутом этапе развития искусственного интеллекта станет реальностью качественный машинный перевод с любого языка на любой за считанные доли секунды. Пока имеем вот что (профиль одного из продавцов на ебей с русским интерфейсом, но англоязычным описанием):
https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png

Разделы

  • Настройка Windows
  • Аппаратные решения
  • Windows 10
  • Интернет-подсказки
  • Полезные программы
  • Настройка Wi-Fi
  • Советы начинающим
  • Решение проблем

Источник: makewap.ru

OpenALL: что это и как исправить ошибку связанную с этим файлом?

При очередной попытке запустить игру на операционной системе Windows может появиться ошибка, связанная с библиотекой OpenAL_32.dll. Точнее, конечно, будет сказать, что она связана с ее отсутствием. В этой статье мы попытаемся разобраться, что такое openal32.dll, для чего нужен этот файл и как исправить эту самую ошибку.

Что такое OpenAL

Рассказ стоит начать, конечно же, с определения. Ведь перед ее решением необходимо понять, с чем мы имеем дело. Итак, важно понимать, что OpenALL — это динамическая библиотека, отвечающая за объемное звучание в видеоиграх и в программах, связанных со звуком. Она является частью пакета OpenGL, который зачастую инсталлируется в систему при установке самой Windows.

Почему ошибка появляется?

Теперь, понимая, что OpenALL — это библиотека, необходимая для корректного воспроизведения аудио в играх, можно перейти непосредственно к причинам появления данной ошибки.

Читайте также:
Enterprise sim pin service что это за программа на Андроид

А их может быть всего лишь три:

  1. Библиотека была удалена с компьютера.
  2. Файл библиотеки был видоизменен сторонними программами.
  3. Фал был заражен вирусом.

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

Чтобы устранить данный нюанс, вам необходимо перед выполнением инструкций просканировать всю систему на наличие вирусов, и в случае их обнаружения удалить.

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

Исправляем ошибку, устанавливая пакет

Мы знаем, что OpenALL — это часть пакета OpenGL, а это значит, что для внедрения нужной библиотеки в систему нам необходимо установить этот пакет.

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

Исправляем ошибку, загружая и устанавливая библиотеку

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

Он подразумевает загрузку отдельной библиотеки из Интернета с последующей ее установкой в систему. Как и в прошлый раз, здесь есть такой же нюанс: вам необходимо найти эту библиотеку на надежном ресурсе, а после ее загрузки проверить антивирусом, чтобы убедиться в подлинности файла. После этого можно переходить ко второму этапу, который заключается в помещении библиотеки в нужную директорию, иначе система не будет ее обнаруживать и дальше.

К сожалению, единой директории нет, все зависит от версии вашей ОС. Так, если вы пользуетесь 32-битной системой, вам надо переместить файл OpenALL32.dll в папку System32, что расположена в папке Windows на системном диске. В том случае, если у вас 64-битная ОС, эта папка будет размещена там же, только называться будет SysWOW64.

Теперь вы знаете не только, что OpenALL — это библиотека, отвечающая за звук в игре, но и то, как устранить ошибку, связанную с ее отсутствием.

Источник: fb.ru

Базовый менеджер звука на OpenAL для вашего проекта. Разработка звукового движка

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

В первой статье вашему вниманию предложен алгоритм разработки звукового менеджера.

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

Первое важное решение: какую использовать библиотеку? Подобных разработок немало, но лишь некоторые из них бесплатны. Если вы ищете универсальную библиотеку, которая будет работать на компьютерах и мобильных устройствах, то, возможно, ваше внимание привлечет OpenAL. Она поддерживается как iOS, так и операционными системами Windows, Linux, Mac.

OpenAL — это библиотека, написанная на языке C и использующая API, подобное тому, что применяется в OpenGL. В OpenGL все функции начинаются с префикса g1, в OpenAL используется префикс a1.

Для Windows вам необходимо будет использовать ответвленную версию библиотеки. OpenAL была создана фирмой Creative, на сегодняшний день эта библиотека устарела и больше не обновляется (последняя версия API 1.1 от 2005 года). К счастью, существует OpenAL Soft implementation, которая использует то же самое API, что и оригинальная OpenAL.

Для устройств Apple, работающих под управлением iOS, ситуация намного лучше. OpenAL напрямую поддерживается Apple, потому вам не надо ничего устанавливать, просто добавить в ваш проект ссылки на соответствующие библиотеки. Подробная информация представлена здесь.

Одним из самых больших недостатков OpenAL является отсутствие поддержки ОС Android, которая использует OpenSL. После недолгих поисков вы можете обнаружить «порты» OpenAL для Android. Они сопоставляют вызовы функций OpenAL вызовам соответствующих функций OpenSL, так что это фактически упаковщик. Один из них можно найти здесь (GitHub).

Он использует упомянутый ранее OpenAL Soft, но скомпонован с другими флагами.

После выбора библиотеки, вы должны выбрать поддерживаемые звуковые форматы, которые хотите проигрывать. Любимый MP3 — не лучший выбор, декодер сложный, а также есть зарегистрированные на данный формат патенты. Лучшим выбором является OGG. Декодер прост в использовании, открыт и OGG файлы часто имеют меньший размер, чем MP3 с теми же настройками. К тому же, он поддерживает несжатое WAV.

Разработка звукового движка

Начнем с разработки звукового движка и определимся, что вам нужно, чтобы он работал правильно.

В первую очередь, вам понадобится библиотека OpenAL. OpenAL является библиотекой C. Для упрощения манипуляций желательно добавить какую-либо объектно-ориентированную оболочку. Мы воспользуемся C++, но подобная конструкция может быть использована также и в других языках (конечно, вам понадобится «порт» библиотеки OpenAL с С на ваш язык).

Помимо OpenAL, вам также потребуется поддержка потоков. В нашем примере будет использована библиотека PTHREAD (версия для Windows). Если вы ориентируетесь на C++ 11, вы также можете воспользоваться встроенной поддержкой потоков.

Для OGG декомпрессии вам понадобится библиотека OGG Vorbis (скачать части libogg и libvorbis).

WAV-файлы используют не очень часто, в большинстве случаев для отладки, но желательно обеспечить поддержку и этого формата. Простую WAV-декомпрессию легко написать с нуля, потому лучше использовать свое решение, а не готовую библиотеку.

Проект состоит из двух основных классов, одного интерфейса (чисто виртуального класса), а также одного класса для каждого из поддерживаемых аудио-форматов (OGG, WAV…).

  1. SoundManager — главный класс, использующий одноэлементную модель. В данном случае это самый хороший вариант, так как вы, вероятно, проинициализируете только один экземпляр OpenAL. Этот класс используется для управления и обновления всех звуков, а также он содержит ссылки на все SoundObjects.
  2. SoundObject — наш главный класс для работы со звуком, в котором описаны такие методы, как: воспроизведение, пауза, перемотка, обновление…
  3. ISoundFileWrapper — интерфейс (чисто виртуальный класс) для различных форматов файлов, описания методов декомпрессии, заполнения буферов и т.д.
  4. Wrapper_OGG — класс , который реализует ISoundFIleWrapper. Для декомпрессии OGG-файлов.
  5. Wrapper_WAV — класс, который реализует ISoundFIleWrapper. Для декомпрессии WAV-файлов.

Инициализация OpenAL

Код, описанный в данном разделе, можно найти в классе Soundmanager. Начнем с кода для инициализации OpenAL.

alGetError(); ALCdevice * deviceAL = alcOpenDevice(NULL); if (deviceAL == NULL) < LogError(«Failed to init OpenAL device.»); return; >ALCcontext * contextAL = alcCreateContext(deviceAL, NULL); AL_CHECK(alcMakeContextCurrent(contextAL));

В дальнейшем устройства и контекстные переменные нам больше не понадобятся, но только до этапа освобождения ресурсов. OpenAL сохраняет все эти данные во внутренних структурах.

В функции alcMakeContextCurrent описан макрос AL_CHECK, который используется для проверки ошибок OpenAL в режиме отладки. Его код представлен ниже:

const char * GetOpenALErrorString(int errID)
inline void CheckOpenALError(const char* stmt, const char* fname, int line) < ALenum err = alGetError(); if (err != AL_NO_ERROR) < LogError(«OpenAL error %08x, (%s) at %s:%i — for %s», err, GetOpenALErrorString(err), fname, line,stmt); >>;
#ifndef AL_CHECK #ifdef _DEBUG #define AL_CHECK(stmt) do < stmt; CheckOpenALError(#stmt, __FILE__, __LINE__); >while (0); #else #define AL_CHECK(stmt) stmt #endif #endif

Читайте также:
Программа bolt что это

Этот макрос можно использовать при каждом вызове OpenAL.

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

Буферы, как вы, вероятно, думаете, содержат несжатые данные, которые проигрывает OpenAL. Источник (фактически — звук, который будет воспроизводиться) загружает данные из ассоциированных с ним буферов. Есть определенные ограничения на количество буферов и источников. Точное значение зависит от вашей системы. Давайте создадим для начала 512 буферов и 16 источников, чтобы иметь возможность воспроизводить 16 звуков одновременно.

for (int i = 0; i < 512; i++) < SoundBuffer buffer; AL_CHECK( alGenBuffers((ALuint)1, this->buffers.push_back(buffer); >for (int i = 0; i < 16; i++)

Вы можете заметить, что функция alGen* в качестве второго параметра получает указатель на unsigned int, который является идентификатором созданного буфера или звука. Для удобства можно создать простую структуру, элементами которой будут идентификатор и булевая переменная, показывающая состояние: свободен буфер или используется каким-либо звуком.

Помимо этого, создадим два списка:

  1. список всех источников и буферов;
  2. список, содержащий только те ресурсы, которые свободны (не связаны с каким-либо звуком).

for (uint32 i = 0; i < this->buffers.size(); i++) < this->freeBuffers.push_back(buffers[i]); >for (uint32 i = 0; i < this->sources.size(); i++)

Если вы используете потоки, то также должны проинициализировать их.

Теперь, когда вы подготовили все необходимое, пришло время добавить звук в ваш движок.

Логика воспроизведения звука

Прежде, чем мы начнем рассматривать код и вдаваться в подробности, важно понять, как управлять и воспроизводить звуки. Существует два решения этой проблемы.

Первое: вы можете загрузить все звуковые данные в один буфер и просто воспроизвести их. Это легкий и быстрый способ. Но, как обычно, у простых решений есть недостатки. Размер несжатых файлов намного больше, чем сжатых. Представьте себе, вы будете использовать больше одного звука.

И в итоге, размер всех буферов может оказаться больше, чем доступной свободной памяти. Что теперь?

К счастью, есть второй подход: в один буфер загружается лишь небольшая часть файла, воспроизводится, а затем загружается новая порция. Звучит хорошо, не так ли? Но, на самом деле, это не так. Если воспользоваться этим методом, вы можете услышать паузы в конце воспроизведения данных перед новым заполнением буфера и последующим воспроизведением.

Решается эта проблема просто: необходимо заполнять не один буфер, а несколько. Заполните несколько буферов (например, три), воспроизведите данные из первого и, как только его содержимое будет воспроизведено, немедленно запустите воспроизведение из второго и в это же время заполните уже использованный буфер новыми данными. Выполняйте эту операцию в цикле, пока не будет воспроизведен весь звук.

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

Однако, если вы не используете update вместе с основным циклом вашего двигателя (не применяете потоки), то могут возникнуть проблемы при малом количестве буферов. Почему? Представьте, что у вас есть Windows — приложение, и вы перетащили окно программы по рабочему столу. В Windows это может привести к тому, что основной поток будет приостановлен и находиться в состоянии ожидания.

Звук будет играть, так как сама OpenAL имеет свой собственный поток для воспроизведения звуков, но только до тех пор, пока в очереди есть буферы, которые можно воспроизводить. Если все они будут исчерпаны, звук прекратится. Причина тому — заблокированный основной поток, в результате чего буферы не обновляются.

Каждый буфер имеет свой размер в байтах, который устанавливается во время создания звука. Чтобы вычислить продолжительность звука в буфере, вы можете воспользоваться этим уравнением:

duration = BUFFER_SIZE/(sound.freqency * sound.channels * sound.bitsPerChannel/8

Примечание: Если вы хотите вычислить продолжительность воспроизведения текущей записи, вы должны учитывать все буферы, но это не так просто. Мы рассмотрим это в одной из последующих статей.

Источник: tproger.ru

Что такое OpenAl.exe? Как исправить связанные с ним ошибки? [РЕШЕНО]

EXE проблемы с OpenAl.exe чаще всего связаны с повреждением или отсутствием исполняемого файла, и зачастую возникают во время запуска OpenAL Installer. Как правило, решить проблему можно заменой файла EXE. Запуск сканирования реестра после замены файла, из-за которого возникает проблема, позволит очистить все недействительные файлы OpenAl.exe, расширения файлов или другие ссылки на файлы, которые могли быть повреждены в результате заражения вредоносным ПО.

Типы Исполнимые файлы, которые используют EXE, также известны в качестве формата Windows Executable File. Мы подготовили для вас несколько версий файлов OpenAl.exe, которые походят для %%os%% и нескольких выпусков Windows. Данные файлы можно посмотреть и скачать ниже. В некоторых случаях в настоящее время в нашей базе могут отсутствовать некоторые версии OpenAl.exe, но их можно запросить, нажав на кнопку Request (Запрос) ниже. В крайнем случае, если ниже отсутствует необходимый вам файл ниже, для получения необходимой версии вы также можете связаться с Windows Software Developer.

Несмотря на то, что в большинстве случаев после размещения файла OpenAl.exe в надлежащем месте на жёстком диске, сообщения об ошибках, связанных с этим файлом, больше не выводятся, следует выполнить быструю проверку, чтобы окончательно в этом убедиться. Убедитесь в том, что вам удалось устранить ошибку, открыв OpenAL Installer и (или) выполнив операцию, при выполнении которой возникала проблема.

Источник: www.solvusoft.com

IT Notes

OpenGL (Open Graphics Library — открытая графическая библиотека) — спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

OpenAL (англ. Open Audio Library) — свободно распространяемый аппаратно-программный интерфейс (API) для работы с аудиоданными. Ключевой особенностью является работа со звуком в 3D пространстве и использование эффектов EAX.

Далее обо всех этих технологиях будет рассказано несколько подробнее.

OpenGL

OpenGL (Open Graphics Library — открытая графическая библиотека) — спецификация, определяющая независимый от языка программирования кросс-платформенный программный интерфейс для написания приложений, использующих двумерную и трёхмерную компьютерную графику.

Используется при создании компьютерных игр, САПР, виртуальной реальности, визуализации в научных исследованиях. На платформе Windows конкурирует с Direct3D.

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

Если аппаратура не позволяет реализовать какую-либо возможность, она должна быть эмулирована программно. Производители должны пройти специфические тесты (conformance tests — тесты на соответствие) прежде чем реализация будет классифицирована как OpenGL реализация. Таким образом, разработчикам программного обеспечения достаточно научиться использовать функции, описанные в спецификации, оставив эффективную реализацию последних разработчикам аппаратного обеспечения.

Эффективные реализации OpenGL существуют для Windows, Unix-платформ, PlayStation 3 и Mac OS. Эти реализации обычно предоставляются изготовителями видеоадаптеров и активно используют возможности последних. Существуют также чисто программные реализации спецификации OpenGL, одной из которых является библиотека Mesa. Из лицензионных соображений Mesa является «неофициальной» реализацией OpenGL, хотя полностью с ней совместима на уровне кода.

Спецификация OpenGL пересматривается Консорциумом ARB (Architecture Review Board), который был сформирован в 1992 году. Консорциум состоит из компаний, заинтересованных в создании широко распространённого и доступного API.

Согласно официальному сайту OpenGL, членами ARB с решающим голосом на ноябрь 2004 года являются производители профессиональных графических аппаратных средств SGI, 3Dlabs, Matrox и Evans https://kavayii.blogspot.com/2010/06/opengl-openal.html» target=»_blank»]kavayii.blogspot.com[/mask_link]

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru