工作生活

关于离屏渲染

2019-07-01  本文已影响0人  言叶之庭_

最近学习了图像渲染方面的知识,写一下自己对于离屏渲染的理解。

造成离屏渲染的原因有很多:

设置CALayer的cornerRadius,edgeAntialiasingMask,allowsEdgeAntialiasing属性

把CALayer的maskToBounds设为YES 

设置CALayer的shadow属性

设置CALayer的mask属性

把CALayer的allowsGroupOpacity属性设为YES而且opacity小于1

…...等

我们接触到最多需要离屏渲染的地方大都是在处理图片圆角的时候,很多人都知道使用maskToBounds会造成离屏渲染。但是并没要告诉我们为什么会造成离屏渲染,离屏渲染为什么会影响性能。

1.离屏渲染是什么

我们看到的屏幕中的图像都是由GPU(Core Animation)CPU(Core Graphics)渲染出来了,GPU主要负责图像渲染操作;CPU负责对象创建布局,然后读取渲染数据显示在屏幕上。

在我们看到到图像之前,系统首先会在当前的上下文(context)中创建一个缓冲区:帧缓冲区。在帧缓冲区中经过一系列渲染操作,最后将渲染后的结果交给CPU显示在当前屏幕上。

当我们想创建一个新的帧缓冲区进行图形渲染时,需要在屏幕之外的帧缓冲区中进行操作,这就形成了离屏渲染。所以离屏渲染的核心原因其实是为了创建新帧缓冲区进行图形绘制

2.离屏渲为什么会影响性能

当需要离屏渲染时,系统首先要它分配一个内存空间,创建一个新的上下文。系统需要从当前的屏幕的上下文切换到我们新建的上下文,然后在创建的帧缓冲区上来进行绘制,绘制完成以后,为了将帧缓冲区的内容显示到屏幕中,又需要切换到屏幕的上下文中。

造成性能影响的主要原因就是创建帧缓冲区和进行上下文切换。

以上就是我对于造成离屏渲染原因和离屏渲染影响性能的理解。

这里对于什么是上下文切换,上下文切换又是怎么影响性能的,并没详细说明,这里还需要去查阅相关资料来理解。

上一篇 下一篇

猜你喜欢

热点阅读