Я пишу аудио часть игры и использую OpenAL. Я хочу использовать некоторые расширения, но тесты всегда терпят неудачу:
TRACE: AudioManager - Sound device: 'Generic Software'
TRACE: AudioManager - Enabling OpenAL extensions...
TRACE: AudioManager - Compressor support: NO
TRACE: AudioManager - Reverb support: YES
TRACE: AudioManager - Chorus support: NO
TRACE: AudioManager - Distortion support: NO
TRACE: AudioManager - Echo support: NO
TRACE: AudioManager - Flanger support: NO
TRACE: AudioManager - Frequency shifter support: NO
TRACE: AudioManager - Vocal morpher support: NO
TRACE: AudioManager - Pitch shifter support: NO
TRACE: AudioManager - Ring modulator support: NO
TRACE: AudioManager - AutoWAH support: NO
TRACE: AudioManager - Equalizer support: NO
TRACE: AudioManager - EAX Reverb support: YES
Это потому, что я получаю только драйвер Generic Software, который поддерживает только реверберацию и реверберацию EAX. И не только на моей машине, но и на других.
Вот как я могу определить драйверы для OpenAL:
ALchar device[256];
ZeroMemory(device, 256);
if (alcIsExtensionPresent(NULL, "ALC_ENUMERATE_ALL_EXT"))
{
strcpy_s(device, 256, alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER));
}
else if (alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT"))
{
strcpy_s(device, 256, alcGetString(NULL, ALC_DEVICE_SPECIFIER));
}
TRACE_AUDIOMANAGER("Sound device: '%s'", device);
g_System = alcOpenDevice(device);
Согласно спецификации, спецификатор устройства должен возвращать два драйвера: «Универсальное оборудование» и «Универсальное программное обеспечение», разделенные нулевым терминатором.
Моя звуковая карта - это устройство NVIDIA High Definition Audio, использующее драйвер nvhda32v.sys (версия 1.0.0.63, обновлено 11-11-2009).
Почему OpenAL не обнаруживает мое оборудование?