Войти
ПрограммированиеФорумОбщее

Введение в OpenAL, и проигрывание музыкального формата OGG/Vorbis (Комментарии к статье) (4 стр)

Страницы: 1 2 3 4 5 6 Следующая »
#45
0:30, 11 июля 2006

Да статей полно на сайте Алексея Борескова http://steps3d.animekazan.net/
Я там статью про OpenAL почитал, и сразу сделал демку. Там еще статьи по OpenGL есть про современные расширения.


#46
6:10, 11 июля 2006

FreemaN
нужна аппаратная поддержка OpenAL, иначе смысла нету и тебе квака выдаёт предупреждение.

#47
14:34, 11 сен. 2006

хм... как я понимаю, данные openAL с диска подсасывать не умеет (соотв. стриминг надо вручную делать), а как же дела обстоят с xbox360? В http://www.openal.org/platforms.html говорят, что xbox поддерживается...
Интересно, что с PS3...

#48
12:39, 18 ноя. 2006

как узнать elapsed time(ну или remaining) какого-нить sound source?

updated
сделал так, если кому интересно :)
clock_t m_endTime = clock();
(m_endTime - m_startTime) / CLOCKS_PER_SEC;

#49
23:31, 21 янв. 2007

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

#50
19:43, 18 мар. 2007

У меня ov_pcm_total возвращает 0, объясните, пожалуйста, почему такое может быть?

#51
14:30, 20 мар. 2007

Неужели никто не знает? А у меня меж тем, функция ov_read возвращает не правильные данные. Читаю я всё из памяти, т.е. открываю через ov_open_callbacks...
Если что-то надо я выложу, только скажите, в чём может быть ошибка...

#52
18:48, 4 сен. 2007

Большое спасибо авторам и переводчикам этого материала. Я добавил для своего звукового движка несколько новых функций (считывающих wav, pcm и ogg из памяти в буфер) и пришлось пока обойтись без функции LoadOggFile(), так как обнаружился глюк — даже после Close() при попытке декодирования нового ogg-файла из диска (Streamed = false) и наполнения звуком OpenAL буфера (с последующим добавлением в ассоциативный массив информации о новом буфере и имени файла) происходит ошибка якобы некорректного формата ogg-файла в функции ov_open_callbacks(...). Попробую заменить тело функции LoadOggFile() кодом из учебника Мейсона МакКаски «Звук в играх».

Прошло более 9 месяцев
#53
14:03, 22 июня 2008

Хотелось бы дать некоторые замечания по статье.
1) alutLoadWAVFile() проигрывает не все файлы WAV. Из за этого вылетает пресловутая ошибка "Invalid Value".
2) Автор забыл упомянуть про функцию alSourcePause, которая ставит проигрывание звука на паузу, а не сбрасывает, как функция alSourceStop. Если вызвать затем alSourcePlay, то в первом случае проболжит проигрывание с того же места, а во втором случае проигрывание начнется с самого начала.

#54
17:41, 22 июня 2008

Ну рассказывай давай, какие там wav-файлы не проигрываются.

#55
2:51, 28 июня 2008

От балды скачал парочку файлов wav с сети. Плеер их спокойно проигрывал. А вот загрузить такой файл с помощью соответсвующей функции не удавалось.

#56
14:26, 23 авг. 2008

Отличная статья! Огромный респект!

ссылка на OpenAL SDK 1.0.zip

#57
13:32, 24 авг. 2008

Duncon, в разделе download твоей ссылки есть SDK версии 1.1 , в которой нет alu.h и иже с ней.

#58
18:43, 14 фев. 2009

Как вариант: можно скачать пример и там есть все библиотеки.

#59
22:33, 4 мар. 2009

Да, с кодеками проблема. Когда ставил от 2001 года glut -- некоторые wav не грузились.
Поставил с сайта (от 2006 года -- последний). Уже прочитал размер и какие-то данные не грузившихся файлов, но сам звук так и не загрузил.

А вот сама функция alutLoadWAVFile -- мб ее нужно несколько раз вызывать? Не нашел толкового описания в документации((

Кстати, почему у тебя в примере "mPos" в открытых данных?
Их изменение ничего не дает, зато сбивает с толку.

Ведь ты хоть и даешь в alSourcefv ссылку на данные, но ссылка то используется только для копирования.. Я так сделал у себя:

...
class Sound
...
public:

  void setPosition(const vector3df &pos);
  void setVelocity(const vector3df &vel);

  void setPitch(const f32 &pitch);
  void setGain(const f32 &gain);

  bool IsStopped();

private:
  vector3df Velocity;
  vector3df Position;
  f32 Pitch;
  f32 Gain;
...
void Sound::setPosition(const vector3df &pos)
{
  Position = pos;
  alSourcefv(SourceID, AL_POSITION, &Position.X);
};

bool Sound::IsStopped()
{
  ALint value;
  alGetSourcei(SourceID, AL_SOURCE_STATE, &value);
  return (value == AL_STOPPED ? true : false);
};

void Sound::setVelocity(const vector3df &vel)
{
  Velocity = vel;
  alSourcefv(SourceID, AL_VELOCITY, &Velocity.X);
};
...
Просто и понятно. И нет желания (а главное возможности) ручками лезть куда не надо (единственно смешение типов не есть гуд).
Фактически можно вообще убрать "Position" и "Velocity" -- если состояние объекта не важно. К тому же вообще, состояние можно узнавать из самого же OpenAL


PS Ах, самое главное. Спасибо за статью. Большое! Правда она мне помогла.

PPS Кстати, интересно, а сколько на свете врапперов, если каждый считающий себя программистом написал не меньше десятка? О_о

Страницы: 1 2 3 4 5 6 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.