Hi Daniel,
On Thu, 23 Aug 2007, Daniel PEACOCK wrote:
Do you mean there is code in openal32.dll that will fallback to the GS
device if GH can't be used? I thought the "router" was where the
device enumeration stuff happened...
The fallback code is in the wrap_oal.dll and only happens if the game
requests "GH" and the system doesn't meet the minimum requirements.
The latest OpenAL32.dll and wrap_oal.dll will not list "GH" in the
device enumeration strings if it can't be used.
Okay. I guess the SVN wrap_oal.dll doesn't have this feature (i.e. it's
new in the Creative Labs "OpenAL SDK" release of wrap_oal.dll)?
I guess it would be too much trouble to separate the DS3D updates/fixes
(and any other "open" stuff) from the IP-laden code so that the
OpenAL-Windows could be brought up to date...?
It could be done (I used to do this) but it became more and more work so
I stopped after a while. If / when I get some time I'll look at this
again. From a Creative point of view we *want* developers to use all
the extra features such as EAX and EFX which means we don't really want
anyone to use a basic wrap_oal.dll component that doesn't have all the
cool stuff in it ;0)
Sure, I can understand that. However, for our game (targeting Linux and
OSX as well as WinXP), it simplifies things to include the DLLs needed and
not require any extra installations by the user (other than the normal
"install the latest drivers for your sound card and video card" mandate).
If there are bugs in the DS3D portion of wrap_oal.dll that are fixed in
Creative's "OpenAL SDK" wrap_oal.dll, then we might want those fixes for
our game, but would we be allowed to include the fixed-up wrap_oal.dll
(with the DS3D fixes) from the "OpenAL SDK" with our game, and use the
openal32.dll built from SVN (which you said is identical to the one in the
"OpenAL SDK" release) without legal hassles?
Currently we use OpenAL built from SVN (OpenAL-Windows tree for PC,
OpenAL-Sample for Linux, and eventually the tree for Mac when we get that
far), and we include the DLLs with the game EXE. Simple and easy, no
additional installs, etc.,... and it will (hopefully) support 3D hardware
sound on WinXP if the sound card has DS3D drivers that support 3D hardware
sound. However, Vista will be a problem... because our wrap_oal.dll (or
is it openal32.dll) isn't smart enough to NOT try to use DS3D ("Generic
Hardware") on Vista.
Ouch... my brain hurts... ;-)
I downloaded the latest (Feb 2003) and it doesn't appear to have a
ct_oal.dll. But if the driver supports DS3D and takes advantage of
hardware, then I guess it will avoid mixing and 3D spatialization on the
CPU.
Hmmmm OK maybe it has been pulled out. You can check the soundcard's
capabilities using DXCapsViewer (ships with the DirectX SDK) - if you
have hardware DS3D support you should see dwMaxHwMixingAllBuffers > 0
(probably around 30 for a Live! card).
Good tip!
I see in the "router" code (OpenAL-Windows from trunk) where it tries
to use ALC_ENUMERATE_ALL_EXT first (if it can) to fetch the list of
available devices from each the *oal.dll files it can find. How would
the app/game have any control/affect on this process? Doesn't the
app/game only get to call alcEnumerateDevices() and the rest happens
"behind the scenes"...?
alcEnumerateDevice is not an API function. The app/game needs to pass a
NULL device handle to alcGetString with the enum ALC_DEVICE_SPECIFIER to
get the NULL character separated list of available devices, e.g.
const char *szList = alcGetString(NULL, ALC_DEVICE_SPECIFIER);
For the complete list (all devices on all soundcards) you would do ...
const char *szCompleteList = alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER);
You should really check to see if the appropriate enumeration extension is
present before calling
either of these functions though.
Ahhh, okay. The confusing part (for me) was that the router DLL code does
this same kind of query on ct_oal.dll and any other DLLs that might be
found on the system.
Thanks!
Ed
Ed Phillips <ed@xxxxxxxx> University of Delaware (302) 831-6082
Systems Programmer IV, Network and Systems Services
|
|