OpenGL

二、画面撕裂 引入垂直同步+三重帧缓冲

2020-07-06  本文已影响0人  夏天的枫_

画面撕裂

了解画面撕裂之前,需要先了解显示的原理

解决方案:垂直同步信号+三重缓冲区;

注意:Android使用的是三重缓冲区+垂直同步信号;iOS使用的是双重缓冲区+垂直同步,苹果将CPU和GPU的计算能力优化到频率相一致,所以在Apple设备上也非常少的出现撕裂现象。

三重帧缓冲区之前还有双重帧缓冲区,双重缓冲区机制是,在GPU预先渲染一帧画面存入一个缓冲区内,以便视频控制器从缓冲区中读取并显示,当GPU将下一帧渲染好,GPU会直接让视频控制器从第二个缓冲区读取数据再显示。这就提高了效率也解决了画面撕裂,但同时出现了新问题,掉帧(延迟)现象。双重缓冲机制为了将帧缓存交换的时间和显示器刷新时间保持同步,帧缓存中的画面将会延后一个刷新周期被显示出来。所以引入三重缓冲区+垂直同步技术方案。

补充CPU和GPU各自特性
CPU:是运算核心,控制中枢;逻辑复杂,数据处理庞大;依赖性非常高,并发和时间片切换执行;
GPU:绘图运算的微处理器;GLSL语言就比较简单且执行快捷,处理逻辑少;计算单元能高并发,依耐性非常低;

上一篇 下一篇

猜你喜欢

热点阅读