IOS渲染流程之RenderServer处理图层信息

先来回顾一下Android的渲染史:

Android的渲染史:

Android4.0之前绘制是在主线程执行的,4.0之后除了引入Vsync和双缓冲还引入了单独处理绘制的RenderServer线程。在draw中保存记录绘制指令,稍后RenderServer会取出绘制指令进行调用GPU绘制,填充到Surface的缓冲区中,WindowManager将所有的Surface提供到缓冲区中,SurfaceFliger取出缓冲区的数据进行合成图层操作,合成策略会借鉴于HWComposer模块一起处理,HWComposer再将处理好的数据给到frameBuffer,Display取展示到屏幕。

RenderServer在IOS中是单独的进程去处理,在Android中RenderServer线程去处理绘制操作,只不过该线程是FM层维护的

同步至RenderServer进程

将CALayer的content数据打包通过IPC提交到RenderServer进程,RenderServer进行调用CoreAnimation框架进行处理阴影等信息:

RenderServer流程:

解析发送过来的图层信息包,里面包含图元信息。
调用OPGL生成图像将处理后的数据提交到GPU的command Buffer缓冲区中(最主要的工作)
GPU从command Buffer缓冲区中读取数据,进行处理图元信息

image.png

处理图元信息流程:

  • Triler对应于顶点处理器,给图元添加基本信息:光照,纹理等信息

  • 平铺:将图元转换为Vertex,链接Vertex,生成额外的Vertex用于生成更复杂的几何图形 ,并进行光栅化处理(生成像素跨国像素中心点的才是有效像素),并将像素信息提交到Parameter Buffer中

  • Tiler更新完像素信息,Parameter 缓冲区满自后,将像素处理转换为Bitmap(处理像素,生成Bitmap)。 这个里面会进行片段着色器等处理,对片段进行着色(计算图元的光照纹理信息...)....

  • 混合裁剪:减少不必要的渲染,对透明度等进行混合/......

  • 将处理后的数据放到renderBuffer缓冲区中【猜测是三缓冲的第三个缓冲区】

交换缓冲区

等待Vsync信号置换renderBuffer和BackBuffer的数据,BackBuffer和frameBuffer的数据,Display取出frameBuffer进行渲染

原文链接:IOS渲染流程之RenderServer处理图层信息 - 掘金 (juejin.cn)

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魏铁锤爱摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值