博客> iOS面试题:什么是离屏渲染?什么情况下会触发?该如何应对?
iOS面试题:什么是离屏渲染?什么情况下会触发?该如何应对?
2019-06-16 11:35 评论:0 阅读:433 Monkey2020
iOS面试题

更多:iOS面试题大全

离屏渲染就是在当前屏幕缓冲区以外,新开辟一个缓冲区进行操作。

离屏渲染出发的场景有以下:

  • 圆角 (maskToBounds并用才会触发)
  • 图层蒙版
  • 阴影
  • 光栅化

为什么要有离屏渲染?

大家高中物理应该学过显示器是如何显示图像的:需要显示的图像经过CRT电子枪以极快的速度一行一行的扫描,扫描出来就呈现了一帧画面,随后电子枪又会回到初始位置循环扫描,形成了我们看到的图片或视频。

为了让显示器的显示跟视频控制器同步,当电子枪新扫描一行的时候,准备扫描的时发送一个水平同步信号(HSync信号),显示器的刷新频率就是HSync信号产生的频率。然后CPU计算好frame等属性,将计算好的内容交给GPU去渲染,GPU渲染好之后就会放入帧缓冲区。然后视频控制器会按照HSync信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器,就显示出来了。具体的大家自行查找资料或询问相关专业人士,这里只参考网上资料做一个简单的描述。

离屏渲染的代价很高,想要进行离屏渲染,首选要创建一个新的缓冲区,屏幕渲染会有一个上下文环境的一个概念,离屏渲染的整个过程需要切换上下文环境,先从当前屏幕切换到离屏,等结束后,又要将上下文环境切换回来。这也是为什么会消耗性能的原因了。

由于垂直同步的机制,如果在一个 HSync 时间内,CPU 或者 GPU 没有完成内容提交,则那一帧就会被丢弃,等待下一次机会再显示,而这时显示屏会保留之前的内容不变。这就是界面卡顿的原因。

为什么要避免离屏渲染?

CPU GPU 在绘制渲染视图时做了大量的工作。离屏渲染发生在 GPU 层面上,会创建新的渲染缓冲区,会触发 OpenGL 的多通道渲染管线,图形上下文的切换会造成额外的开销,增加 GPU 工作量。如果 CPU GPU 累计耗时 16.67 毫秒还没有完成,就会造成卡顿掉帧。

圆角属性蒙层遮罩 都会触发离屏渲染。指定了以上属性,标记了它在新的图形上下文中,在未愈合之前,不可以用于显示的时候就出发了离屏渲染。

  • 在OpenGL中,GPU有2种渲染方式

    • On-Screen Rendering:当前屏幕渲染,在当前用于显示的屏幕缓冲区进行渲染操作
    • Off-Screen Rendering:离屏渲染,在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作
  • 离屏渲染消耗性能的原因

    • 需要创建新的缓冲区
    • 离屏渲染的整个过程,需要多次切换上下文环境,先是从当前屏幕(On-Screen)切换到离屏(Off-Screen);等到离屏渲染结束以后,将离屏缓冲区的渲染结果显示到屏幕上,又需要将上下文环境从离屏切换到当前屏幕
  • 哪些操作会触发离屏渲染?

    • 光栅化,layer.shouldRasterize = YES
    • 遮罩,layer.mask
    • 圆角,同时设置 layer.masksToBounds = YES、layer.cornerRadius大于0
    • 考虑通过 CoreGraphics 绘制裁剪圆角,或者叫美工提供圆角图片
    • 阴影,layer.shadowXXX,如果设置了 layer.shadowPath 就不会产生离屏渲染
收藏
0
sina weixin mail 回到顶部
索尼19亿美元收购EMI剩余全部股份 嫌犯贪污562万余元潜逃21年 监委用13天将其抓获 Note7自燃案再开庭 三星公司否认有欺诈消费者行为 外媒:英新外交大臣首访华 中英承诺加强自贸合作 政协委员建议在雄安建中央大学 2035年达世界顶级 2018年最牛3X3又来了!200万奖金+5辆车等你赢 政协委员刘林:民办教育别成“暴利机构”代名词 德国多地房价暴涨 央行发出调控预警 马办前副秘书长用寓言讽刺蔡当局 批台天天愚人节 特斯拉为降成本不愿增加传感器?马斯克否认 这行业人才紧缺:工资800变8000 企业到贫困地抢人 银河期货:受新疆天气炒作 资金进场影响期棉盘面
特朗普政府加快制定消费者数据隐私政策 培养电商人才 阿里巴巴成立全球跨境电商教育联盟 勇之队带你走近达喀尔 张轩:达喀尔魅力无可替代 中国佛教协会会长学诚法师:我主张让商业退出寺门 欧盟公布对美报复清单 特朗普钢铝重税引发美下岗潮 叙媒:叙利亚霍姆斯省一处空军基地遭遇导弹袭击 韩国产业银行预计4月27日前签约注资韩国通用 2018CTCC珠海站火热上演 热浪席卷真爱告白 美国务院:未接到朝有关或取消美朝峰会的正式通知 大连机场前一建材市场起火 现场浓烟滚滚(图) 曼城快刀虐杀当世最贵后卫 马夏尔看着他无语凝噎 韩副外长在美会晤美副国务卿 就朝核问题等交换意见
我中将:南海岛礁武器并非针对哪国 谁侵略就针对谁 19岁留澳学生被殴致死 父母痛失独生子吁亡羊补牢 克洛普:英超5强都有望欧冠晋级 下轮踢谁无所谓 牛汇:美联储纪要未能带动美元反弹 后市何去何从 人民日报整版刊文谈新时代如何克服精神懈怠危险 印尼泗水警察总部突发爆炸 致至少一名警察伤亡 亚泰主帅:国安中场很出色 今年赢他们难度大一点 全国围棋升段赛各组名次 四段以上组陈正勋排第一 81个国家欠费 联合国今年现金缺口前所未有 三缺一棋牌游戏平台 白手起家创业做什么 家庭办厂项目废纸加工 最近开什么店比较好 AG亚游集团