ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 网络编程 >> IOS开发 >> iOS图像显示原理

iOS图像显示原理(1/3)

来源:网络整理     时间:2018-10-25     关键词:

本篇文章主要介绍了" iOS图像显示原理",主要涉及到方面的内容,对于IOS开发感兴趣的同学可以参考一下: 析构图显示:图像显示各组件分工:~ CPU:计算视图frame,图片解码,绘制纹理交给GPU。~ GPU:纹理混合,顶点变换,渲染到帧缓冲区。~ 时钟信号:垂直...

析构图显示:

图像显示各组件分工:

  • ~ CPU:计算视图frame,图片解码,绘制纹理交给GPU。

  • ~ GPU:纹理混合,顶点变换,渲染到帧缓冲区。

  • ~ 时钟信号:垂直同步信号V-Sync / 水平同步信号H-Sync。

  • ~ iOS设备双缓冲机制:前/后帧缓冲区。

  • ~ CRT:阴极电子枪发射电子,在阴极高电压的作用下,电子由电子枪射向荧光屏,使荧光粉发光,将图像显示在屏幕上。采用时钟信号控制。

  • ~ LCD:(光学成像原理)在不加电压的情况下,光线会沿着液晶分子的间隙前进旋转90°,光可以通过。在 加入电压后,光沿着液晶分子的间隙直线前进,被滤光板挡住。

~ 注:LCD的成像原理与CRT截然不同,每一个像素的颜色在需要改变时才去改变电压,但扔需要按照一定的刷新频率向GPU获取新的图像用于显示。

图像撕裂原因分析

图像撕裂:当视频控制器还未读取完成时,GPU将新的一帧内容提交到帧缓冲区并把两个帧缓冲区进行更新后,视频控制器就会把新的一帧数据的下半段显示到屏幕上,造成画面撕裂的现象。

解决方案:垂直同步机制

弊端:GPU会等待显示的V-Sync信号发出后,才进行新的一帧渲染和缓存区更新。能解决画面撕裂现象,也增加了画面流畅度,但需要消耗更多的计算资源,由此可能导致卡顿。

离屏渲染与光栅化

  • 离屏渲染:CPU渲染及非GPU缓冲区的渲染统称为离屏渲染。

  • 离屏渲染的触发:CoreGraphics的上下文绘制,drawRect绘制,layer圆角/边框/阴影/抗锯齿/光栅化(shouldRasterize置为YES)等。

  • 离屏渲染的检测:Instruments的CoreAnimation工具动态监测。(使用方法:Color Offscreen –Rendered Yellow :开启后会把那些需要离屏渲染的图层高亮成黄色,黄色图层可能存在性能问题。)

  • 光栅化简介:隐式创建一个位图,各种阴影遮罩等效果也会保存到位图中缓存起来,从而减少渲染的频度,把GPU的操作转到CPU上,生成位图缓存,直接读取调用。(注:对于经常变动的内容,不要开启光栅化,防止性能浪费,如Cell的复用)

  • 光栅化的检测:Color Hits Green and Misses Red 开启后,若shouldRasterize设置为YES,对应的渲染结果会缓存,如果图层是绿色,表示缓存被复用;如果是红色,就表示缓存被重复创建,可能存在性能问题。

  • GPU缓存区渲染优势:为图像显示做了高度优化,速度较快。

相关图片

相关文章