屏幕渲染原理及优化方式
2021-07-28 11:18:49 15 举报
AI智能生成
屏幕渲染原理及优化方式
作者其他创作
大纲/内容
屏幕渲染原理
时钟信号
水平同步信号HSync
垂直同步信号VSync
CPU
GPU
iOS 设备双缓冲机制
前帧缓冲区
后帧缓冲区
弊端
图像撕裂
原因
解决方案:垂直同步
卡顿
渲染
离屏渲染
CPU渲染
非GPU缓冲区渲染
触发情况
CoreGraphics的CGContext绘制
drawRect绘制
instuments的CoreAnimation工具实时监测->Debug Options
GPU缓冲区渲染
instruments工具监测
Time Profiler->Call Tree Options
Separate By THread
按线程划分
Invert Call Tree
Hide System Libraries
隐藏系统库
Core Animation->Debug Options
Color Blended layers
Color Copied images
Color immediately
设置调试颜色每帧更新(一般不用)
Color Compositing-Fast-Path Blue
对任何直接使用OpenGL绘制的图层高亮
Flash Updated Regions
对重绘的内容高亮成黄色(软件层面使用Core Graphics 绘制的图层)
Color Hits Green and Misses Red
前面以述
Color Offscreen-Renderded Yellow
Color Non-Standard Surface Formats
Apple 开发文档没注释(一般不用)
AsyncDisplayKit开源框架
简介
基本原理
图层预合成
异步并发
Runloop任务分发
滑动列表的预加载
解决方案
对象创建
对象调整
布局计算
Autolayout
文本渲染
图片解码
图像绘制
纹理渲染
视图混合
图形生成
性能优化方案
预加载
无限滚动列表
无限滚动列表并不能算是一种预加载的实现原理,它只是提供一种分页显示的方法,在每次滚动到UITableView底部时,才会开始发起网络请求向服务器获取对应的资源。
threshold
使用 Threshold 进行预加载是一种最为常见的预加载方式,知乎客户端就使用了这种方式预加载条目,而其原理也非常简单,根据当前UITableView的所在位置,除以目前整个UITableView.contentView的高度,来判断当前是否需要发起网络请求:
惰性加载
惰性加载,就是在用户滚动的时候会对用户滚动结束的区域进行计算,只加载目标区域中的资源。用户在飞速滚动中会看到巨多的空白条目,因为用户并不想阅读这些条目,所以,我们并不需要真正去加载这些内容,只需要在ASTableView/ASCollectionView中只根据用户滚动的目标区域惰性加载资源。惰性加载的方式不仅仅减少了网络请求的冗余资源,同时也减少了渲染视图、数据绑定的耗时。
智能预加载
可以点击前方链接进行自行查看
异步绘制
全局并发控制
0 条评论
回复 删除
下一页