c++ - OpenAL alGenBuffers 错误代码 40964 解决方法

标签 c++ audio openal

我是 openAL 编程的菜鸟,我遇到了一个错误。

我的代码如下:

ALuint test_buffer[10];
ALenum error;
alGenBuffers(10,test_buffer);
if((error=alGetError())!=AL_NO_ERROR){
  std::cout<<"alGenBuffer Error:"<<error<<std::endl;
}

然后我得到错误代码 40964。 如何解决?

最佳答案

首先您需要在 openAL 常量中查找结果,然后打印一个更有意义的错误。类似的东西:

public static String openAlErrorToString(int err) {
switch (err) {
  case AL_NO_ERROR: return "AL_NO_ERROR";
  case AL_INVALID_DEVICE: return "AL_INVALID_DEVICE";
  case AL_INVALID_CONTEXT: return "AL_INVALID_CONTEXT";
  case AL_INVALID_ENUM: return "AL_INVALID_ENUM";
  case AL_INVALID_VALUE: return "AL_INVALID_VALUE";
  case AL_OUT_OF_MEMORY: return "AL_OUT_OF_MEMORY";
  /* ... */
  default:
    return "Unknown error code";
}

Google 快速显示 40964 可能是 AL_INVALID_OPERATIONAL_INVALID_VALUE

来自 the docs对于 alGenBuffers,这只会推送:

  • AL_INVALID_VALUE 如果缓冲区数组不够大,无法容纳 请求的缓冲区数。
  • AL_OUT_OF_MEMORY 如果没有足够的可用内存 生成所有请求的缓冲区。

因此您的AL_INVALID_OPERATION 可能是您程序早期的错误。也许您在堆栈上有遗留的错误代码?在缓冲区初始化之前调用 alGetError() 以排除这种情况。

关于c++ - OpenAL alGenBuffers 错误代码 40964 解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36001785/

相关文章:

c++ - 如何在没有类枚举器的情况下反序列化类层次结构

c++ - 具有 C++11 构造的映射函数

HTML5 和 RTSP 开发基于浏览器的网络 session 应用程序

java - OpenAL WaveData 错误

ios - CocosDenshion : why isPlaying always false (I can hear the music)?

c++ - 在一组 shared_ptr<QString> 中搜索

actionscript-3 - AS3 Air — 检查 Zip 以获取音频文件

android - 如何使用暂停和恢复创建 ProgressDialog

ffmpeg - {OpenAL(+FFmpeg)} 由于 ogg 格式,如何对可变大小的缓冲区进行排队?

c++ - 关于函数指针 : why the overhead time changes when the content of the function changes