1

来自OpenAL 程序员指南

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

);

是否可以在不需要重新采样缓冲区的情况下询问 OpenAL 设备它更喜欢使用什么频率和格式?

4

1 回答 1

1

Afaik 你只能得到频率,而不是格式。当您使用alcCreateContext指定混合缓冲区的属性创建函数时。如果您通过那里,NULL那么您可以稍后使用以下方法查询这些属性alcGetIntegerv

  1. ALC_ATTRIBUTES_SIZE使用枚举的第一个查询属性计数
  2. ALC_ALL_ATTRIBUTES然后使用枚举分配足够大的缓冲区和查询属性
  3. 缓冲区将包含成对的属性名称及其值:[attrib1, value1, attrib2, value2, ...]
  4. 频率枚举名称是ALC_FREQUENCY- 遍历数组并搜索此枚举。

至于格式 - 对立体声或单声道声音使用带符号的缩写。这应该可以在所有平台上提供足够好的性能(即使是那些使用浮点数进行混合的平台,将 short 转换为 short 到 float 也是快速操作)。

于 2012-12-31T07:08:51.870 回答