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,每个帧只能有一个渲染;
  • 所有的交互(平移、缩放等)都被合并并呈现在下一帧中。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,789评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,172评论 1 32
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,931评论 1 45
  • 现在生活又开始有些混乱,很多事情不知道怎么解,不知道自己做的是对是错,好希望能有一个类似解忧杂货店的地方,帮我解决烦恼
    猫头鹰TWO阅读 246评论 0 0
  • 做了很久的思想斗争。 终于下决心离开了朝九晚五、安逸无忧的体制。 因为无所事事、无所追求、两眼茫然、纠结迷茫不是我...
    甲坤阅读 1,037评论 2 0