是否可以查询OpenAL设备的首选频率和格式?

时间:2012-12-30 23:58:00

标签: c++ c audio openal

来自The OpenAL Programmers Guide

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

);

可以在不需要重新取样缓冲区的情况下查询OpenAL设备的首选频率和格式吗?

1 个答案:

答案 0 :(得分:1)

Afaik你只能获得频率,而不是格式。使用alcCreateContext创建函数时,请指定混合缓冲区的属性。如果您通过NULL,则可以稍后使用alcGetIntegerv查询这些属性:

  1. 使用ALC_ATTRIBUTES_SIZE枚举
  2. 进行首次查询属性计数
  3. 然后使用ALC_ALL_ATTRIBUTES enum
  4. 分配足够大的缓冲区和查询属性
  5. 缓冲区将包含一对属性名称及其值:[attrib1,value1,attrib2,value2,...]
  6. 频率枚举名称为ALC_FREQUENCY - 循环遍历数组并搜索此枚举。
  7. 至于格式 - 使用签名的短音立体声或单声道声音。这应该在所有平台上提供足够好的性能(即使那些使用浮动进行混合,将短到短转换为浮动的是快速操作)。