Rendering loop 渲染循环

在大多数现代浏览器中,渲染循环使用requestAnimationFrame (RAF)方法。如果RAF不可用,它将用一个16毫秒的定时器进行微调。

在cornerstone中渲染循环功能基于元素启用的。在cornerstone中用enable(element)或disable(element)来启用和禁用元素。

执行情况如下:

  • 在RAF注册draw()回调;
  • 在屏幕上显示帧之后,浏览器调用draw();
  • Once called,
    • 如果元素计划重新呈现,则它将被呈现并重新向RAF注册draw();
    • 如果元素计划重新呈现,则不执行任何工作,回调将重新注册到RAF;
    • 如果元素已经被禁用,回调返回是not重新注册结束渲染循环。

这意味着:

  • cornerstone.draw()和cornerstone.invalidate()不再触发立即渲染视图,而是将图像标记为需要重新呈现;
  • 每个cornerstone 元素注册自己的RAF循环;
  • 如果在一个60赫兹的系统中渲染时间超过16毫秒,则跳过渲染帧;
  • 即使渲染时间远低于16ms,每个帧只能有一个渲染;
  • 所有的交互(平移、缩放等)都被合并并呈现在下一帧中。

你可能感兴趣的:(Rendering loop 渲染循环)