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

Delphi OpenAL EAX

Страницы: 1 2 Следующая »
#0
8:21, 25 июня 2011

Привет! Захотелось мне поковырять ЕАХ.
Нашел пример на noeska.com но он выдает ошибку "Acces Violation at 00000000".

А именно это он делает в этом месте :

//set the effect
  Env := EAX_ENVIRONMENT_HANGAR;
  eaxSet(DSPROPSETID_EAX20_ListenerProperties,
         DSPROPERTY_EAXLISTENER_ENVIRONMENT or
         DSPROPERTY_EAXLISTENER_DEFERRED,
         0, @Env, sizeof(TALuint));
  // Commit settings on source 0
  eaxSet(DSPROPSETID_EAX20_BufferProperties,
         DSPROPERTY_EAXBUFFER_COMMITDEFERREDSETTINGS,
         source, nil, 0);
  // Commit Listener settings
  eaxSet(DSPROPSETID_EAX20_ListenerProperties,
         DSPROPERTY_EAXLISTENER_COMMITDEFERREDSETTINGS, 0, nil, 0);

У людей была похожая проблема с этим кодом, и там помог совет в модуле EAX для функций eaxSet,eaxGet поставить не stdcall a cdecl

    EAXSet: Function(const Guid: TGUID; ALuint1: TALuint; ALuint2: TALuint; point: Pointer; ALuint3: TALuint): TALenum; stdcall; {$EXTERNALSYM EAXSet}
    EAXGet: Function(const Guid: TGUID; ALuint1: TALuint; ALuint2: TALuint; point: Pointer; ALuint3: TALuint): TALenum; stdcall; {$EXTERNALSYM EAXGet}

но у меня по прежнему ошибка :(


#1
10:52, 25 июня 2011

Проверь не равны ли nil указатели eaxGet и eaxSet.

#2
10:53, 25 июня 2011

Рекомендую Готовый звуковой движок OpenAL + Ogg + EAX2.0

#3
15:50, 25 июня 2011

YarUnderoaker
Я копал этот движок, но дока по нему нету.. как с ним работать непонятно... да и у меня в принципе реализованно все что мне нужно, вот только хотелось пару ЕАХ эффектов докрутить и все.

#4
15:54, 25 июня 2011

kipar

А как мне это сделать?.. При дебаге если на них навести курсор они не выбрасывают хинт со значением(.

#5
17:35, 25 июня 2011

Run->Inspect
или
Ctrl+Левая кнопка на переменной
Для функции введи в инспект @Имя_функции например @IntToStr

#6
17:45, 25 июня 2011

niello

Спасибо. Да. Действительно nil. и.... И что теперь делать? :(

#7
17:52, 25 июня 2011

а еах с какой библиотеки грузится, она у тебя есть в каталоге с программой или зарегистрирована в системе?

#8
17:57, 25 июня 2011

случайно не забыл?

  alIsExtensionPresent('EAX2.0');
  FnName := 'EAXSet';
  eaxSet := alGetProcAddress(FnName);
  FnName := 'EAXGet';
  eaxGet := alGetProcAddress(FnName);

#9
18:19, 25 июня 2011

Еще проверь что возвращает alIsExtensionPresent('EAX2.0'): должно быть true

#10
20:10, 25 июня 2011

kipar

Блин alIsExtensionPresent('EAX2.0') возвращает false!

niello

EAX у меня в виде eax.pas модуля, в каталоге с программой. Брал из тех же примеров noeska.com 

#11
20:46, 27 июня 2011

Так что же мне делать? Пробывал вкинуть в папку с прогой eax.dll но не получилось.

#12
13:09, 28 июня 2011

Spike
> Блин alIsExtensionPresent('EAX2.0') возвращает false!
Видимо у тебя не поддерживаются расширения версии 2.0 :)
Может, поискать новые драйвера? Я вообще не в курсе что это за расширения.

#13
15:13, 28 июня 2011

Есть ли люди у которых этот 12 пример из noeska.com работает?

Duncon
У меня стояло и cdecl и stdcall все равно ошибка остается.

kipar
Пробывла на двух машинах. На обоих не поддерживаюется?

#14
16:53, 28 июня 2011

Кстати нужна не eax.dll, а OpenAL.dll. Правда в ней EAXGet действительно нет.
В движке из #3 есть библиотека bin\soundlib\wrap_oal.dll, в которой EAXGet есть и все работает. Так что берешь эту библиотеку и все ОК.

Страницы: 1 2 Следующая »
ПрограммированиеФорумЗвук

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