想象一下这个函数:
void SoundManager::playSource(ALuint sourceID, float offset)
{
alSourceStop(sourceID);
ALint iTotal = 0;
ALint iCurrent = 0;
ALint uiBuffer = 0;
alGetSourcei(sourceID, AL_BUFFER, &uiBuffer);
alGetBufferi(uiBuffer, AL_SIZE, &iTotal);
iCurrent = iTotal * offset;
alSourcei(sourceID, AL_BYTE_OFFSET, iCurrent);
alSourcePlay(sourceID);
}
这个想法是调用playSource(x, 0.5f)
会跳转到(大约)缓冲区的一半,等等。
我第一次调用它时它工作正常,但如果我在同一个源上再次调用它(无论该源是否正在播放)它开始播放就好像我用偏移量 0 调用它一样。
任何想法为什么?