Войти
ПрограммированиеФорумЗвук

проблема open Al

#0
16:05, 13 сен. 2007

Почему функция  alGenSources выделяет только только 32 ресурса, а мне надо выделить больше 32 айдишников!!! Ни кто не знает в чем причина?


#1
18:33, 13 сен. 2007

Work__C++
Имхо, скорее всего ты делаешь инициализацию через
alcOpenDevice(NULL)
по умолчанию там обход начинается с аппаратной части, т.е. он инит generic hardware (т.е. дает на откуп это в DirectX).
Если особых заморочек нет, но обязательно нужно большое кол-во источников, инициализируй как
alcOpenDevice("Generic Software");

#2
18:42, 13 сен. 2007

Делать динамический менеджмент источников, чтобы одновременно использовалось не более 32-х.

#3
18:55, 13 сен. 2007

Work__C++
а действительно, как ты умудряешься задействовать сразу 32 источника? Или вопрос был чисто теоретический?

#4
22:58, 13 сен. 2007

твоя звуковушка больше не осиливает см. пост №2

Прошло более 9 месяцев
#5
18:24, 5 июля 2008

Но товарищи, объясните. Как же можно обойтись малым количеством источников?

Вот видел тут чей-то пост, там писалось что обычно до 12-ти источников звуков редко доходит, обычно 4-7 источников.

А если у меня автомат? Звук выстрела занимает 2 секунды. Ведь когда я проигрую один и тот же источник, то звук ,если он игрался, прерывается и начинается заново. Нужно значит, больше таких источников. И что же делать, если мне уже только для одного автомата нужно 10 источников, для того, чтобы звуки выстрелов не перекрывали друг друга.

+ звуки ходьбы, по разным поверхностям.  поверхностей минимум 5. Если для каждой поверхности сделать по 4 разных звука...
+ музыка для фона...
+ звуки попаданий для разных поверхностей...
+ фоновые звуки....

Я не понимаю, как можно влезть в эти 12 источников?

#6
18:39, 5 июля 2008

http://www.dtf.ru/articles/read.php?id=44042
вот это можно почитать.

#7
21:15, 5 июля 2008

Уже читал. Спасибо. Кстати хорошая статья :)

#8
21:50, 5 июля 2008

Всегда пожалуйста...

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

Проблему понял...
Не надо путать "источник звука" с "данными звукового эффекта". Это совершенно разные вещи. Источник может быть только один, а эффектов вы можете загрузить и по порядку проиграть через этот источник хоть миллион. Закреплять источник за конкретным эффектом при таком кол-ве эффектов - это **********, ******** и ******во. Все конечно имхо.

#9
22:45, 5 июля 2008

viewizard

Да. Я вот правда в своем предыдущем посте не написал, что понял.

Загружаем данные в буфер. Буферов может быть много. Источников - мало. Фактически столько сколько поддерживает аудиокарта. И как я понял из статьи на ДТФ, что даже если у меня получится запустить аж 200 источников, то хаос звуковой такой будет, что никто не захочет больше запускать мою игру. Нужно отбирать какие звуки пускать на воспроизведение. Если два звука запускаются совсем рядом, то один не запускать... следить за приоритетами звуков.. и т.д.

Но это теория. Нужно еще реализовать. Кстати, не совсем понимаю, как реализовать тот же автомат, если скорострельность у него 10 выстрелов в секунду. А если будут рядом стоять еще 5 человек и все будут стрелять гашетом?

Всё же есть над чем подумать...

#10
23:11, 5 июля 2008

Ну... если бы все было просто.... ;)

> Кстати, не совсем понимаю, как реализовать тот же автомат, если скорострельность у него 10 выстрелов в секунду.

Ну, тут все просто. 1 источник, и один звук с "хвостом", т.е. звук одиночного выстрела который уходит на "нет". Скорострельность автомата  (время от одного до другого выстрела) - известна.
Запускаете эффект выстрела, через нужное время (зависит от скорострельности) останавливаете эффект, запускаете еще раз через этот же источник, последний не останавливаете (чтобы прозвучал "хвост"). Имхо, вообще не должно быть проблем.
Как вариант, можно иметь 2 типа эффекта - зацикленный для очереди и одиночный, или зацикленный и эффект "хвоста" ;)

В общем, думайте сами =)

#11
8:41, 6 июля 2008

viewizard

>Запускаете эффект выстрела, через нужное время (зависит от скорострельности)
>останавливаете эффект, запускаете еще раз через этот же источник, последний не
>останавливаете (чтобы прозвучал "хвост"). Имхо, вообще не должно быть проблем.

Останавливать эффект? Но ведь будет слышно что звук прирвется... или нет? Хотя может не будет слышно потому что следующий звук выстрела "перекроет" предыдущий звук по громкости? Ну а последний не останавливать чтобы отзвучал "хвост".

Наверно я понял. Спасибо

ПрограммированиеФорумЗвук

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