问题: 简述一下GPU显示过程?


  1. CPU计算好显示内容提交给GPU
  2. GPU渲染完成将渲染结果放到帧缓冲区中
  3. 视频控制器通过 Vsync信号 逐帧读取帧缓冲区中的数据
  4. 经过数模转换传递给显示器显示

问题: 屏幕撕裂的原因是什么?


CPU/GPU计算处理时间速度与屏幕刷新时间不一致导致的,也就是显卡输出帧的速度比显示器快,显示器的处理速度跟不上显卡,在显示器处理第一帧的时候,第二帧的缓冲就已经来了,所以就会有屏幕撕裂的问题了.


问题: 屏幕掉帧的原因是什么?


苹果设备采用的是 垂直同步信号 + 双缓冲区策略 的形式来显示图像. Vsync信号来临时,下一个缓冲区没有渲染完成之后,那么屏幕会依然显示上一个缓冲区的内容,从而产生掉帧问题.


问题: iOS图片渲染流程?



问题: 什么叫离屏渲染?


当使用圆角, 阴影, 遮罩等时, 图层属性的混合体被指定为在未预合成之前不能绘制到屏幕上,这时候就需要启动离屏渲染.

离屏渲染的过程之所以消耗比较昂贵,其主要原因不在于渲染,而在于缓冲区的创建以及缓冲区上下文的切换过程中,由于离屏渲染会增加GPU的工作量,很有可能导致CPU+GPU的时间间隔超过16.7ms,从而导致页面卡顿.


问题: 离屏渲染的触发条件是什么?


  1. shouldRasterize 光栅化
  2. 圆角
  3. shadows 阴影
  4. edge antialiasing 抗锯齿
  5. 渐变
  6. group opacity 不透明
  7. masks 遮罩

IT界无底坑洞栋主 欢迎加Q骚扰:676758285