美文网首页
iOS 渲染流程和屏幕卡顿原因

iOS 渲染流程和屏幕卡顿原因

作者: 木扬音 | 来源:发表于2021-08-30 15:55 被阅读0次

    屏幕卡顿

    屏幕卡顿是指图形显示到屏幕上时,出现了图像撕裂、掉帧等问题

    卡顿原因

    • 图形、图像显示到屏幕上,需要经过CPU计算和GPU渲染,但是在这过程中是需要一定的耗时,如果耗时过长,就会导致帧缓冲区的数据没有更新,显示的还是上一帧的数据
    • 垂直同步+双缓冲区:通过Vsync强制同步,虽然可以解决屏幕撕裂,但同时也会导致掉帧,虽然采用了双缓冲区,但是并不能从根本上解决CPU、GPU处理图形、图像的速度,从而导致掉帧

    屏幕显示的过程

    • CPU计算需要显示的图像,提交给GPU
    • GPU进行渲染后将结果存放到帧缓冲区
    • 视频控制器再去读取帧缓冲区里的内容
      image.png

    垂直同步和双缓冲区

    • 垂直同步:是指给帧缓冲加锁,当电子光束扫描的过程中,只有扫描完成了才会读取下一帧的数据,而不是只读取一部分
    • 双缓冲区:采用两个帧缓冲区用于GPU处理结果的存储,当屏幕显示其中一个缓存区内容时,另一个缓冲区继续等待下一个缓冲结果,两个缓冲区依次进行交替
    image.png

    掉帧

    当前屏幕显示的是A,在收到垂直信号后,CPU和GPU处理的B还没有准备好,此时,屏幕显示的仍然是A


    image.png

    iOS渲染流程

    • App通过调用CoreGraphicsCoreAnimationCoreImage等框架接口触发图像渲染操作
    • 框架将渲染交由OpenGL ES来驱动GPU做渲染,最后显示到屏幕上
    image.png

    iOS中的渲染框架

    未命名文件.png

    相关文章

      网友评论

          本文标题:iOS 渲染流程和屏幕卡顿原因

          本文链接:https://www.haomeiwen.com/subject/bmtoiltx.html