我是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。 怎么解决?
答案 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_OPERATION
或AL_INVALID_VALUE
。
alGenBuffers
来自AL_INVALID_VALUE
,这只会推动:
AL_OUT_OF_MEMORY
缓冲区数组不足以容纳 请求的缓冲区数量。AL_INVALID_OPERATION
没有足够的可用内存 生成所有请求的缓冲区。
alGetError()
可能是您之前程序中的错误。也许你在堆栈上有一个遗留错误代码?在缓冲区初始化之前调用{{1}}来规则。