OpenAL alGenBuffers错误代码40964解决方案

时间:2016-03-15 02:48:10

标签: 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。 怎么解决?

1 个答案:

答案 0 :(得分:3)

首先,您需要在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";
}

快速谷歌显示40964可能是AL_INVALID_OPERATIONAL_INVALID_VALUE

alGenBuffers来自AL_INVALID_VALUE,这只会推动:

  

AL_OUT_OF_MEMORY缓冲区数组不足以容纳   请求的缓冲区数量。   AL_INVALID_OPERATION没有足够的可用内存   生成所有请求的缓冲区。

alGetError()可能是您之前程序中的错误。也许你在堆栈上有一个遗留错误代码?在缓冲区初始化之前调用{{1}}来规则。