1.UI显示图像原理
CUP->GPU->Frame Buffer ->视频控制器->显示器
1.CPU:负责提交位图
2.GPU:负责渲染内容并提交到帧缓冲区
3. Frame Buffer :存放渲染好的内容
4:视频控制器:根据垂直显示信号的提示去帧缓冲区提取屏幕要显示的内容
5:显示器:显示内容
2.UI卡顿掉帧原因
原因:CPU+GPU工作的时间>16.67ms导致掉帧
CPU工作:
1.Layout:文本处理, 文本宽高计算,布局计算,高度缓存
2.Rendering:文本绘制,图片解码,
3.提交位图:
4.对象的创建,操作,销毁
GPU工作:
顶点着色,元图组装,栅栏化,片段着色,片段处理
3.离屏渲染
当前屏幕渲染:当前用于显示的缓冲区进行渲染
离屏渲染:CPU离屏渲染&GPU离屏渲染
GPU离屏渲染:在当前屏幕缓存区外开辟了一块缓冲区进行渲染操作
为何要避免离屏渲染?
1.需要额外开辟一块缓冲区供渲染操作
2.onscreen和offscreen上下文切换才能完成
3.渲染的每一帧都会这样处理
导致:GPU工作量加大->CPU+GPU>16.67ms
5.UIView和CALayer
单一指责原则:
UIView:负责提供内容给Layer,负责处理触摸等事件,参与响应链
CALayer:负责显示contents
网友评论