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); 
Другие вопросы по тегам