Javascript 为什么JS处理和绘制发生在每个帧的末尾?

Javascript 为什么JS处理和绘制发生在每个帧的末尾?,javascript,google-chrome,webgl,google-chrome-devtools,Javascript,Google Chrome,Webgl,Google Chrome Devtools,我的网页基本上是一个画布,我正在用WebGL更新它。我试图得到一个平滑的水平动画(基本上,就像你在电视上看到的爬行)。我的帧都在16.6毫秒以下,但动画仍然有小的口吃。查看DevTools中的时间线,所有工作(JS和paint)似乎都发生在帧的末尾。我不知道这是不是口吃的原因。我也不明白为什么这项工作不会在每帧的前10毫秒发生 我的渲染循环如下所示: function animate(now) { requestAnimationFrame(animate);

我的网页基本上是一个画布,我正在用WebGL更新它。我试图得到一个平滑的水平动画(基本上,就像你在电视上看到的爬行)。我的帧都在16.6毫秒以下,但动画仍然有小的口吃。查看DevTools中的时间线,所有工作(JS和paint)似乎都发生在帧的末尾。我不知道这是不是口吃的原因。我也不明白为什么这项工作不会在每帧的前10毫秒发生

我的渲染循环如下所示:

    function animate(now) {
        requestAnimationFrame(animate);
        crawl.position.x -= STEP_SIZE;
        renderer.render(scene, camera);
        bufferCopy();
    }

可能是渲染实现造成了这种情况。你检查文件了吗?我倾向于认为devtools不正确地可视化了帧边界。@Teocci我看了一下,这可能对我来说很难理解。@wOxxOm可能是devtools只是测量帧,从最后一次绘制开始并向前计数。让我困惑的是,看着时间线,我认为动画会很平滑,因为我只在每帧中添加了大约6毫秒的工作。