Kinnouka Bokudo

Kinnouka Bokudo

When you see me, and I try to be a good man, you see yourself.

马上订阅 Kinnouka Bokudo RSS 更新: https://kinnoukabokudo.com/feed

当我们谈论离屏渲染时,我们在谈论什么

Kinnouka Bokudo
2021年6月24日 00:00
开发
本文将会介绍有关离屏渲染的基础知识,但在正式开始之前,先粗略介绍下 iPhone 的屏幕显示原理,这样有助于更好地理解离屏渲染。图像显示到屏幕上,大概会经历以下几个步骤: CPU 告诉 GPU 需要显示的内容 GPU 按照 CPU 的要求,将 Layer 渲染进 Frame Buffer(帧缓冲区) 渲染完成后, Video Controller(视频控制器)把渲染结果(作为一帧)显示到屏幕上 由于 iPhone 的刷新率是 60 Hz,所以上述过程正常情况下每秒会发生 60 次。这也就是大概的 iPhone 屏幕显示原理。 离屏渲染 前文中提到「GPU 会将 Layer 渲染进 Frame Buffer」,这是正常的渲染流程,被称为 On-Screen Rendering(当前屏幕渲染)。而离屏渲染与正常渲染流程的唯一不同就在于,当 GPU 在渲染时,由于一些原因,不能将 Layer 渲染进 Frame Buffer,而是需要创建一个 Offscreen Buffer(离屏缓冲区)来参与渲染,然后再将渲染结果放入 Frame Buffer,这个过程就被称为 Off-Screen Rendering(离屏渲染)。 因为离屏渲染需要创建新缓冲区、多次切换上下文环境(从 On-Screen 切换到 Off-Screen)以及每秒将会进行 60 次这样的繁重操作,所以大量的离屏渲染会引起性能问题、降低显示帧率、造成卡顿。 为什么会发生离屏渲染 […]