【发布时间】:2015-03-30 21:23:49
【问题描述】:
代码如下:
ALint cProcessedBuffers = 0;
ALenum alError = AL_NO_ERROR;
alGetSourcei(m_OpenALSourceId, AL_BUFFERS_PROCESSED, &cProcessedBuffers);
if((alError = alGetError()) != AL_NO_ERROR)
{
throw "AudioClip::ProcessPlayedBuffers - error returned from alGetSroucei()";
}
alError = AL_NO_ERROR;
if (cProcessedBuffers > 0)
{
alSourceUnqueueBuffers(m_OpenALSourceId, cProcessedBuffers, arrBuffers);
if((alError = alGetError()) != AL_NO_ERROR)
{
throw "AudioClip::ProcessPlayedBuffers - error returned from alSourceUnqueueBuffers()";
}
}
对 alGetSourcei 的调用返回 cProcessedBuffers > 0,但对 alSourceUnqueueBuffers 的以下调用失败并返回 INVALID_OPERATION。这是一个不总是发生的不稳定错误。包含此示例代码的程序是在紧密循环中运行的单线程应用程序(通常会与显示循环同步,但在这种情况下,我没有使用任何类型的定时回调)。
【问题讨论】:
标签: openal