OpenAL Неверная операция
Я получаю сообщение об ошибке OpenAL "Invalid Operation" при попытке удалить буфер. Я проверил с alIsBuffer и alIsSource, что мой источник и буфер являются допустимыми объектами OpenAL, и это так.
assert(alIsBuffer(m_buffer) == AL_TRUE);
assert(alIsSource(m_source) == AL_TRUE);
alErrorChecking(alSourcei(m_source, AL_BUFFER, NULL));
alErrorChecking(alDeleteBuffers(1, &m_buffer)); //Here i'm getting the Invalid Operation error
m_buffer = 0;
2 ответа
Вот что я использую, чтобы выключить OpenAL
ALenum errorCode = 0;
// Stop the sources
alSourceStopv(1, & streaming_source[0]); // streaming_source
// Clean-up
alDeleteSources(1, &streaming_source[0]);
alDeleteBuffers(16, &streaming_source[0]);
errorCode = alGetError();
alcMakeContextCurrent(NULL);
errorCode = alGetError();
alcDestroyContext(openal_output_context);
alcCloseDevice(openal_output_device);
где у меня в шапке есть
#include <AL/al.h>
#include <AL/alc.h>
ALuint streaming_source[1];
ALCdevice * openal_output_device;
ALCcontext * openal_output_context;
Буфер не может быть присоединен к источнику. При условии, что m_buffer
играет на m_source
Вам нужна эта строка перед удалением буфера:
alSourceUnqueueBuffers( m_source, 1, &m_buffer);