iOS离屏渲染
2017-02-11 22:12:38 0 举报
iOS离屏渲染是一种在后台进行图形处理的技术。它允许应用程序在不阻塞主线程的情况下,将复杂的图形操作转移到另一个缓冲区中进行处理。这样可以避免在主线程上执行耗时的计算,从而提高应用程序的性能和响应速度。 离屏渲染的主要优点是可以提高动画的流畅度和帧率。通过使用离屏渲染,开发人员可以将多个动画图层组合在一起,然后一次性渲染到屏幕上。这种方法可以减少屏幕刷新次数,降低功耗,并提高用户体验。
作者其他创作
大纲/内容
GPU渲染机制:CPU计算好显示内容提交到GPU,GPU渲染完成后将渲染结果放入帧缓冲区,随后视图控制器会按照VSync信号逐行读取帧缓冲区中的数据,经过可能的数模转换传递给显示器显示。GPU屏幕渲染会有以下两种方式:1. On-Screen Rendering 意为当前屏幕渲染,指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区中进行。2. Off-Screen Rendering 意为离屏渲染,指的是GPU在当前屏幕缓冲区外开辟一个缓冲区进行渲染操作相比较于当前屏幕渲染,离屏渲染的代价是很高的,主要体现在如下两个方面:1. 创建新的缓冲区2. 上下文切换。离屏渲染的整个过程,需要多次切换上下文环境:先从当前屏幕切换到离屏,等待离屏渲染结束后,将离屏缓冲区的渲染结果显示到屏幕上,这又需要将上下文环境从离屏切换到当前屏幕。当设置了以下属性时,会触发离屏渲染:* shouldRasterize(光栅化)* masks(遮罩)* shadows(阴影)* edge antialiasing(抗锯齿)* group opacity(不透明)* layer的border、corner建议:为了避免卡顿的问题发生,应当尽可能使用当前屏幕渲染,可以不使用离屏渲染则尽量不用,必须离屏渲染时,相对简单的应该使用CPU渲染,相对复杂的视图则使用一般的离屏渲染。CPU渲染和离屏渲染的区别:由于GPU的浮点运算能力比CPU强,CPU渲染的效率可能不如离屏渲染。但如果仅仅是实现一个简单的效果,直接使用CPU渲染的效率又可能比离屏渲染好,毕竟普通的离屏渲染要涉及到缓冲区创建和上下文切换等耗时操作。一个常见的性能优化的例子就是如何给UIView/UIImageView加圆角。如下是三种加圆角的方式:* 设置cornerRadius* UIBezierPath* Core Graphics(为UIView加圆角)与直接截取图片(为UIImageView加圆角)总结:* 如果能够只用cornerRadius解决问题,就不用优化。(png图片在UIImageView这样设置是不会产生离屏渲染的,iOS9.0以后不会,iOS9.0以前会)* 如果必须设置masksToBounds,可以参考圆角视图的数量,如果数量较少(一页只有几个)也可以考虑不用优化。* UIImageView的圆角通过直接截取图片实现,其它视图的圆角可以通过Core Graphics画出圆角矩形实现。
0 条评论
下一页