Можно ли опрашивать устройство OpenAL о том, какую частоту и формат оно предпочитает?

От Руководство для программистов OpenAL:

void alBufferData(
ALuint buffer,
ALenum format,
const ALvoid *data,
ALsizei size,
ALsizei freq

);

Можно ли опрашивать устройство OpenAL о частоте и формате, которые оно предпочитает использовать, без необходимости повторной выборки буфера?

1

Решение

Afaik вы можете получить только частоту, а не формат. Когда вы создаете функцию, используя alcCreateContext Вы указываете атрибуты для буфера микширования. Если вы пройдете там NULL затем вы можете запросить эти атрибуты позже, используя alcGetIntegerv:

  1. Подсчет атрибутов первого запроса с использованием ALC_ATTRIBUTES_SIZE перечисление
  2. Затем выделите достаточно большой буфер и атрибуты запроса, используя ALC_ALL_ATTRIBUTES перечисление
  3. Буфер будет содержать пары имен атрибутов и их значений: [attrib1, value1, attrib2, value2, …]
  4. Частота enum name is ALC_FREQUENCY — перебрать массив и найти это перечисление.

Что касается формата — используйте подписанные сокращения для стерео или моно звуков. Это должно дать достаточно хорошую производительность на всех платформах (даже те, которые используют плавающие числа для микширования, быстрое преобразование коротких потоков в плавающие).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]