第1节:渲染流程
小测验
1.对于渲染流管线,以下说法正确的是?
A. 渲染管线上总共有两个线程在工作,因此有可能一帧的渲染未结束,下一帧的渲染已经开始
B.渲染管线上总共有4个线程在工作,因此有可能一帧的渲染未结束,下一帧的渲染已经开始
C.渲染管线上总共有2个线程在工作,但是当前帧的渲染未结束前,下一帧的渲染无法开始
答案解析
A 为正确项。虽然 Flutter 有多个线程,但核心渲染管线涉及 UI 线程(负责构建 Layer Tree)和 GPU 线程(负责合成并渲染)。为了提高效率,这两者是异步并行的。当 UI 线程完成当前帧的任务并交给 GPU 线程后,它无需等待 GPU 渲染完成,就可以立刻开始准备下一帧的数据。这种"流水线"作业意味着在某一时刻,GPU 可能正在渲染第 N 帧,而 UI 线程已经在处理第 N+1 帧了
2.对于绘制(paint)与光栅化,下列说法正确的是?
A.绘制就是光栅化,就是将绘制命令转化为屏幕对应的点阵图
B.绘制是在layer上进行的,PictureLayer就是光栅化的产物,而OffsetLayer上不能直接绘制图形
C.layer是绘制产物的载体,绘制产物是绘制命令变换的集合,对应矢量图, 光栅化就是将矢量图转换为对应 的屏幕像素,类似位图,这个过程是在GPU完成的。
D.layer合成是指将两个纹理合成到同一张纹理,这个过程是在CPU完成的。
答案解析
选C。绘制其实就是绘制命令打包,而合成就是将打包过的命令二次打包。光栅化才是将绘制命令转换为屏幕上显示的像素的。另外,虽然CPU里面有个线程叫Raster线程,这个线程却只为光栅化做准备,并不是真正完成光栅化。