我按顺序初始化我的OpenAL源代码:
ALCcontext *_mContext;
ALCdevice *_mDevice;
ALuint _mSourceID;
alcOpenDevice(NULL);
_mContext = alcCreateContext();
alcMakeContextCurrent(_mContext);
alGenSources(1, &_mSourceID);
alSourcei(_mSourceID, ALLOOPING, AL_FALSE);
alSourcei(_mSourceID, AL_SOURCE_TYPE, AL_STREAMING);
alSourcef(_mSourceIDm AL_GAIN, (ALfloat)1.0);
alSpeedOfSound(1.0F);
alSourcei(_mSourceID, AL_SOURCE_TYPE, AL_STREAMING)
引发的错误。错误代码40962.
发生什么事了?为什么设置源类型失败?请帮我。提前谢谢你!
答案 0 :(得分:1)
错误代码40962是AL_INVALID_ENUM(参见al.h)。
OpenAL规范(http://www.openal.org/documentation/openal-1.1-specification.pdf)有一节关于AL_SOURCE_TYPE(第34页)。
AL_SOURCE_TYPE是一个只读属性,指示源是否为 准备好排队缓冲区,准备使用静态缓冲区,或者在 未确定状态,可用于流式传输或静态传输 回放。
问题在于,当它是只读参数时,您正尝试设置AL_SOURCE_TYPE。
- 如果使用了一个或多个缓冲区,则源为Streaming alSourceQueueBuffers
如果将多个缓冲区排入源,则源类型将设置为流式传输。