OpenAL:设置源类型时出错

时间:2014-04-28 03:42:22

标签: audio openal pcm

我按顺序初始化我的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.

发生什么事了?为什么设置源类型失败?请帮我。提前谢谢你!

1 个答案:

答案 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
  •   

如果将多个缓冲区排入源,则源类型将设置为流式传输。