iOS 离屏渲染
2019-04-09 本文已影响14人
飞不越疯人院
不论是在屏渲染还是离屏渲染都是在GPU层面的;
- 在屏渲染(On-Screen Rendering): 意为当前屏幕的渲染, 指的是
GPU
的渲染操作发生在当前用于显示的屏幕缓冲区中; - 离屏渲染(Off-Screen Rendering):意为
GPU
在当前屏幕缓冲区以外新开辟一个缓冲区进行操作;
关于屏幕缓冲区
什么时候会触发离屏渲染?
- 设置图层圆角(和maskToBounds一起使用);
- 设置图层蒙版(masks);
- 设置阴影效果(shadows);
- 设置光栅化(shouldRasterize);
为什么要避免离屏渲染?
16.7ms内CPU和GPU要完成一帧界面绘制, 离屏渲染会触发OpenGL
多通道渲染管线,会造成额外的GPU工作量,导致GPU部分耗时过长进而造成界面掉帧;
离屏渲染会创建新的渲染缓冲区造成内存上的开销; 由于多通道渲染管线界面合成, 要进行上下文的切换造成额外GPU开销,