この関数を想像してください:
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 で呼び出したように再生が開始されます。
理由はありますか?