美文网首页
从OpenGL的角度来剖析iOS的离屏渲染

从OpenGL的角度来剖析iOS的离屏渲染

作者: 左岸凉面 | 来源:发表于2020-08-18 17:27 被阅读0次

什么是离屏渲染?

      首先,相信做iOS的,对离屏渲染都不会陌生,是个老生常谈的东西,那么就简单说一下得什么是离屏渲染。要清楚的解释离屏渲染,就得知道苹果手机的渲染过程。简单的描述就是,GPU通过运算,形成一帧一帧的画面,放在帧缓冲区(FrameBuffer)中,然后,屏幕从帧缓冲器中拿到画面,进行显示。而离屏渲染,顾名思义,就是在内存中另外生成了一个离屏渲染缓冲区(OffScreenBuffer),进行一系列的操作后,形成最终的画面,再转到帧缓冲区中,屏幕从帧缓冲器中拿到画面,进行显示。那为什么需要额外使用一个离屏渲染缓冲区呢?在离屏渲染缓冲区中进行的一系列的操作又是什么呢?让我们从OpenGL的角度来回答这两个问题。

为啥会产生离屏渲染?

    我们先可以给出答案:就是需要离屏渲染的某一帧画面,不能一次性的渲染成功,需要渲染2次或多次,就是触发离屏渲染。以下面的图为例

在屏幕上展示上述效果(在一个图层上)

       在上图中,需要在一个图层上,显示3个矩形的叠加效果,GPU在渲染时,是无法将成像效果一次性渲染成功的,需要先渲染最底层的橘色矩形,产生的中间帧就放入了离屏渲染缓冲区,再渲染蓝色矩形,产生的中间帧也放入了离屏渲染缓冲区,再渲染绿色的矩形,同上,产生的中间帧也放入了离屏渲染缓冲区,这就产生了离屏渲染。上文中描述的一些操作,就是将产生的这几个中间帧,合成计算,形成最终成像的帧,先放进离屏渲染缓冲区,再放入帧缓冲区,然后展示。那跟OpenGL有啥关系呢?

OpenGL,只是一个通用的名称,事实上,苹果基于OpenGL,先是做了OpenGL ES,然后又开发了metal,都是渲染的框架。上述产生帧的过程,实际上就是OpenGL的工作。他给我们提供了一个平台,可以通过ELSL语言,来调度GPU,绘制我们想要的画面。如果想看OpenGL的知识,可以看我OpenGL的其他文章。

相关文章

  • 从OpenGL的角度来剖析iOS的离屏渲染

    什么是离屏渲染? 首先,相信做iOS的,对离屏渲染都不会陌生,是个老生常谈的东西,那么就简单说一下得什么是离...

  • Android OpenGL ES 九. FBO离屏渲染(转载补

    离屏渲染(FrameBufferObject)今天为大家介绍离屏渲染的概念。在OpenGL中,GPU屏幕渲染有以下...

  • 待看文章

    内存相关 【基本功】深入剖析Swift性能优化 渲染相关 关于iOS离屏渲染的深入研究 线程相关 iOS-线程安全

  • 离屏渲染之我知

    相比于当前屏幕渲染,离屏渲染的代价是很高的,这也是iOS移动端优化的必要部分。 OpenGL中,GPU屏幕渲染有以...

  • iOS 界面流畅 - 离屏渲染

    离屏渲染往往会带来界面卡顿的问题,这里将会讨论 当前屏幕渲染、离屏渲染 以及 CPU 渲染 在 OpenGL 中,...

  • iOS离屏渲染

    iOS-离屏渲染详解关于iOS离屏渲染的深入研究关于离屏渲染这两片文章分析的很详细。 渲染过程 根据渲染流水线示意...

  • iOS圆角的离屏渲染,你真的弄明白了吗

    iOS圆角的离屏渲染,你真的弄明白了吗iOS圆角的离屏渲染,你真的弄明白了吗

  • iOS离屏渲染解析

    iOS离屏渲染解析

  • iOS离屏渲染的检测和优化

    在iOS离屏渲染介绍了离屏渲染的逻辑和原理,我们知道离屏渲染对于性能会有较大的消耗,那么开发中怎么避免产生离屏渲染...

  • iOS-离屏渲染探索

    iOS项目性能优化时,不得不提到离屏渲染,为了提升性能,我们要求尽量减少离屏渲染的发生。 那,什么是离屏渲染?离屏...

网友评论

      本文标题:从OpenGL的角度来剖析iOS的离屏渲染

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