От Руководство для программистов OpenAL:
void alBufferData(
ALuint buffer,
ALenum format,
const ALvoid *data,
ALsizei size,
ALsizei freq
);
Можно ли опрашивать устройство OpenAL о частоте и формате, которые оно предпочитает использовать, без необходимости повторной выборки буфера?
Afaik вы можете получить только частоту, а не формат. Когда вы создаете функцию, используя alcCreateContext
Вы указываете атрибуты для буфера микширования. Если вы пройдете там NULL
затем вы можете запросить эти атрибуты позже, используя alcGetIntegerv
:
ALC_ATTRIBUTES_SIZE
перечислениеALC_ALL_ATTRIBUTES
перечислениеALC_FREQUENCY
— перебрать массив и найти это перечисление.Что касается формата — используйте подписанные сокращения для стерео или моно звуков. Это должно дать достаточно хорошую производительность на всех платформах (даже те, которые используют плавающие числа для микширования, быстрое преобразование коротких потоков в плавающие).
Других решений пока нет …