当前位置:  开发笔记 > 编程语言 > 正文

如何多次跳转到特定偏移量?

如何解决《如何多次跳转到特定偏移量?》经验,为你挑选了1个好方法。

想象一下这个功能:

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调用它一样.

有什么想法吗?



1> mcccclean..:

解决了!

尽管API声称设置偏移量适用于任何状态的源,但问题是我本应该在调用alSourceRewind而不是alSourceStop在开始时调用.

似乎设置偏移仅适用于该AL_INITIAL州的来源.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有