来自OpenAL 程序员指南:
void alBufferData(
ALuint buffer,
ALenum format,
const ALvoid *data,
ALsizei size,
ALsizei freq
);
是否可以在不需要重新采样缓冲区的情况下询问 OpenAL 设备它更喜欢使用什么频率和格式?
来自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
- 遍历数组并搜索此枚举。至于格式 - 对立体声或单声道声音使用带符号的缩写。这应该可以在所有平台上提供足够好的性能(即使是那些使用浮点数进行混合的平台,将 short 转换为 short 到 float 也是快速操作)。