总结:DOM树-->渲染树-->layer树(render layer和 graphic layer)-->cc合成树
1.节点和DOM树
网页的内容在内部存储为称为DOM树的Node 对象树。
页面上的每个HTML元素以及元素之间出现的文本都与节点相关联。DOM树的顶级节点始终是文档节点。
2.从节点到RenderObjects(渲染树)
DOM树中生成可视输出的每个节点都有一个相应的RenderObject。RenderObjects存储在并行树结构中,称为渲染树。RenderObject知道如何在显示表面上绘制节点的内容。它通过向GraphicsContext 发出必要的绘制调用来实现。GraphicsContext负责将像素写入最终显示在屏幕上的位图。在Chrome中,GraphicsContext包含了我们的2D绘图库Skia。
传统上,大多数GraphicsContext调用都是对SkCanvas或SkPlatformCanvas的调用,即立即绘制成软件位图。但是要将绘画移离主线程,现在这些命令会被记录到SkPicture中。SkPicture是一个可序列化的数据结构,可以捕获然后重放命令,类似于显示列表。
3.从RenderObjects(渲染树)到RenderLayers(layer树)
每个RenderObject 直接或间接通过祖先RenderObject 与RenderLayer 相关联。
共享相同坐标空间的RenderObjects(例如受同一CSS变换影响)通常属于同一个RenderLayer。存在RenderLayers,以便以正确的顺序合成页面的元素以正确显示重叠内容,半透明元素等。有许多条件会触发为特定