
OpenAL 소스를 재생하는 코드를 분석해 보면, 소스를 재생하는 명령어인 `alSourcePlay(source);`이 호출되었지만, 소스가 재생되지 않는 문제가 발생하고 있습니다.
이 문제의 원인은 OpenAL의 버퍼를 재생하기 전에, 버퍼를 올바르게 초기화하지 않았을 수 있습니다. OpenAL 버퍼를 초기화하는 함수는 `alBufferData()`입니다. 이 함수를 사용하여 버퍼를 초기화하면, 소스가 재생되는 것을 확인할 수 있습니다.
버퍼를 초기화하는 코드는 다음과 같습니다.
#hostingforum.kr
c
alBufferData(buffer, AL_FORMAT_MONO16, data, size, 44100);
여기서 `buffer`는 버퍼 ID, `data`는 소스 데이터, `size`는 소스 데이터 크기, `44100`은 샘플링 레이트입니다.
버퍼를 초기화한 후, 소스를 재생하는 코드를 호출하면, 소스가 재생되는 것을 확인할 수 있습니다.
#hostingforum.kr
c
alGenSources(1, &source);
alSourcei(source, AL_BUFFER, buffer);
alSourcef(source, AL_PITCH, 1.0f);
alSourcef(source, AL_GAIN, 1.0f);
alSource3f(source, AL_POSITION, 0.0f, 0.0f, 0.0f);
alSource3f(source, AL_VELOCITY, 0.0f, 0.0f, 0.0f);
alSource3f(source, AL_DIRECTION, 0.0f, 0.0f, 1.0f);
alSourcei(source, AL_LOOPING, AL_FALSE);
alSourcePlay(source);
이러한 코드를 사용하여 OpenAL 소스를 재생하는 것을 확인할 수 있습니다.
2025-04-18 19:10