渲染引擎的分层和合成机制

398 阅读1分钟

显示器如何显示图像

显示器每秒固定读取60次前缓冲区中的图像,并把图像显示到显示器上。

显卡

显卡的职责是合成图像,并将图像保存到后缓冲区,然后操作系统会让前后缓冲区互换。一般情况下,显卡的更新频率和显示器的刷新频率一致。当处理图片的速度过慢时,就会造成视觉上的卡顿。

帧和帧率

帧:渲染流水线生成的每一副图片称为一帧。

帧率:渲染流水线每秒更新了多少帧称为帧率。

如果在一次动画中,生成帧的时间过久,用户就会感到卡顿。

如何生成一帧图像

重排:需要重新计算CSSOM和DOM,重新进行排版计算。

重绘:不需要重新布局,但依然要重新计算绘制信息,触发绘制后续动作。

合成:使用单独的合成线程来渲染单独的图层,不需要触发布局和绘制节点,性能最好。

分层和合成

由于动画之类的操作的渲染频率比较高,直接从布局树中生成的话,每次都会触发重排或者重绘,会造成页面性能变差,引起卡顿。

分层:页面是一张完整的图片,图片是由多个图层叠加生成的,类似于PS中的图层概念。

合成:将多个图层合并到一起的操作就称为合成。

合成操作是在合成线程上完成的,所以在执行合成操作时不会影响到主线程的执行。