我正在为 iPhone 和 OpenAL 使用 XCode 4.5。问题是我无法在播放声音后删除声音缓冲区:alSourcePlay().
如果我不播放源 - 缓冲区被删除并且 nemory 被释放而没有问题。
加载声音:
alGenBuffers(1, &bufferID);
// Loading awaiting data blob into buffer.
alBufferData(bufferID, format, outData, size, freq);
// Getting source ID from OpenAL.
alGenSources(1, &sourceID);
// Attacing buffer to source.
alSourcei(sourceID, AL_BUFFER, bufferID);
//playing sound (if i comment this line, the problem dissapears)
alSourcePlay(soundId);
释放声音:
//detaching buffer
alSourcei(sourceID, AL_BUFFER, bufferID);
//deleting source
alDeleteSources(1, &sourceID);
//deleting buffer
alDeleteBuffers(1, &bufferID);
删除缓冲区不会引发任何错误,但不会从内存中释放。我正在使用 Instruments 来监控内存。
我花了一周的时间寻找解决方案并阅读 OpenAL 文档。
如果您有 OpenAL 方面的经验,请提供帮助!
谢谢!