ios开发呈现树和渲染树 渲染树构建过程
dom渲染原理
两个相同组件产生类似的 DOM 结构,不同的组件产生不同的 DOM 结构; 对于同一层次的一组子节点,它们可以通过唯一的 id 进行区分。算法上的优化是 React 整个界面 Render 的基础,保证了整体界面渲染的性能。
创新互联基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业双线服务器托管报价,主机托管价格性价比高,为金融证券行业服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
虚拟DOM的解决方式是,通过状态生产一个虚拟状态Dom,然后根据虚拟节点进行渲染,假如是首次渲染的就会直接渲染,但是二次往后的话就是进行虚拟状态树的对比,只更新不同的地方。
原理 当dom渲染时,会createElm创建元素,创建元素后会进行初始化,初始化组件的时候内部还有组件,会不停的去渲染,所以它的渲染顺序是先父后子,完成的顺序是先子后父。
虚拟DOM工作原理: 在Vue中,每个组件都有一个对应的虚拟DOM树,它是一个以组件根节点为起点的JavaScript对象。 当数据发生改变时,Vue会重新计算虚拟DOM树的结构,并和旧的虚拟DOM树进行比较。
Tree 匹配 DOM Tree 进行定位坐标和大小,是否换行,以及 position、overflow、z-index 等等属性,这个过程称为 Flow 或 Layout 。最终通过调用Native GUI 的 API 绘制网页画面的过程称为 Paint 。
具体来说,React通过以下几个步骤来实现Virtual DOM机制: 当数据发生变化时,React会创建一个新的Virtual DOM树。 React会将新旧两个Virtual DOM树进行比较,并找出两者之间的差异。
iOS图片加载渲染过程
1、图形渲染流水线支持从顶点开始进行绘制(在流水线中,顶点会被处理生成纹理),也支持直接使用纹理(图片)进行渲染。
2、GPU的渲染流程不再追溯,当前使用Metal来进行渲染,因此Metal的渲染流程可以看 十Metal - 初探 。
3、iOS页面UI渲染其实是由CPU和GPU同时协作完成的。顺便查了下屏幕渲染,分为三种 离屏渲染(Off-Screen Rendering):就是GPU在当前屏幕以外开辟一个另外的缓冲区进行渲染操作。
4、GPU 图形渲染流程的具体实现可分为六个阶段,如下图所示。第一阶段,顶点着色器 。 该阶段的输入是 顶点数据( Vertex Data )数据,比如以数组的形式传递 3 个 3D 坐标用来表示一个三角形。
5、弊端:GPU会等待显示的V-Sync信号发出后,才进行新的一帧渲染和缓存区更新。能解决画面撕裂现象,也增加了画面流畅度,但需要消耗更多的计算资源,由此可能导致卡顿。
页面重绘与回流
在HTML中,每个元素都可以理解成一个盒子,在浏览器解析过程中,会涉及到回流与重绘。回流 :布局引擎会根据各种样式计算每个盒子在页面上的大小与位置。
在这个过程中,回流与dom树和渲染树有关,重绘与渲染树有关。
页面布局、几何属性改变时(尺寸、布局、display:none等),页面就需要回流。
重绘是指页面中某些元素发生了不影响布局的变化时(如颜色改变),浏览器重新绘制的过程。此时由于只需要UI层面的重新像素绘制,因此损耗较少。
GPU作用以及iOS渲染框架简单理解
1、CPU将图形任务分配给GPU,GPU把渲染好的图片存入缓冲区,视频控制器按照一定的频率显示到屏幕上。这个频率其实是显示器发出的一个信号,叫做垂直同步信号VSync。作用是屏幕显示完一帧画面后再切换到下一帧的显示工作。
2、离屏渲染(Off-Screen Rendering):就是GPU在当前屏幕以外开辟一个另外的缓冲区进行渲染操作。当前屏幕渲染(On-Screen Rendering):指的是GPU是在当前显示的屏幕缓冲区进行的渲染操作。
3、下图所示为 iOS App 的图形渲染技术栈,App 使用 Core Graphics 、 Core Animation 、 Core Image 等框架来绘制可视化内容,这些软件框架相互之间也有着依赖关系。
4、手机中和电脑中的gpu其功能是大致一样的,其目的都是对图像和图形进行处理。
5、GPU的渲染流程不再追溯,当前使用Metal来进行渲染,因此Metal的渲染流程可以看 十Metal - 初探 。
iOS渲染过程
对每个像素进行计算确定最终颜色并完成输出。不过需要注意的是,无论多牛的游戏家用显卡,光影都是CPU计算的,GPU只有2个工作,1多边形生成。2为多边形上颜色。
本来我们从后往前绘制,绘制完一个图层就可以丢弃了。但现在需要依次在 Offscreen Buffer中保存,等待圆角+裁剪处理,即引发了 离屏渲染 关于圆角,iOS 9及之后的系统版本,苹果进行了一些优化。
我怕时间长视频会无法播放,所以我截取了视频中的两部分做成了gif图。
网页渲染过程
一道很常规的题目,考的是基本网络原理,和浏览器加载css,js过程。
IE下载的顺序是从上到下,渲染的顺序也是从上到下,下载和渲染是同时进行的。
Tree 匹配 DOM Tree 进行定位坐标和大小,是否换行,以及 position、overflow、z-index 等等属性,这个过程称为 Flow 或 Layout 。最终通过调用Native GUI 的 API 绘制网页画面的过程称为 Paint 。
标题名称:ios开发呈现树和渲染树 渲染树构建过程
文章网址:http://scyanting.com/article/dgodjhj.html