我们知道,Flutter在UI图中的效率几乎几乎是本地的,这比React Antial好得多,因为React Antial是通过桥梁通过其各自平台的UI系统提供的API(例如iOS中的Uikit框架)。让我们完成绘图。下一步,让我们从硬件绘图开始,也就是说,我们看到的屏幕上的内容是如何逐步显示的,最后介绍了Flutter的UI UI渲染方法的基础实现原理。
当涉及原则时,我们必须讨论屏幕上显示图像的基本原理。我们知道显示(屏幕)由物理显示单元组成。每个单元都可以称为物理像素点,每个像素可以发出多种颜色。显示器的显示原理在不同的物理像素中以不同的物理像素为单位。点上显示了不同的颜色,最终构成了完整的图像。
像素可以发射的颜色总数是显示器的重要指标。例如,我们称之为1600万个颜色屏幕可以显示1600万个颜色,并且显示颜色由RGB三重颜色组成,因此SO600万,第二,第24,即每种基本颜色(R,G,B,B))深度至8位(位)。颜色深度越深,可以显示的颜色越丰富,更美丽。
为了更新显示屏幕,显示屏以固定频率(来自GPU的数据)进行刷新。例如,手机屏幕的刷新频率为60hz。绘制图像框架时,准备绘制下一帧,显示器将发送垂直同步信号(例如Vsync),并且60Hz屏幕将发送60此类信号在一秒钟内。该信号主要用于同步CPU,GPU和显示器。
框架数据传递给显示器以显示帧数据。
CPU和GPU的任务有偏见。CPU主要用于基本数学和逻辑计算。GPU主要执行与图形处理有关的复杂数学,例如矩阵变化和几何计算。GPU的主要作用是确定显示屏每个像素点的最终交付颜色值的最终交付。
由于最终的图形计算和绘图由相应的硬件完成,因此直接操作硬件的说明通常具有操作系统屏蔽。应用程序开发人员通常不会直接面对硬件。为操作系统上方的应用程序调用提供了一些封装的API,但是对于应用程序开发人员来说,拨打这些操作系统提供的API更为复杂且效率低下,因为操作由操作提供的API系统通常是相对基本的,直接直接,直接直接,直接直接,直接直接,直接直接,直接直接,直接直接,直接直接,直接直接,直接直接直接,直接直接,直接,直接,直接找到他。致电很多API细节。
因此,几乎所有用于开发GUI程序的编程语言都将封装在操作系统之上的操作系统上。操作系统的原始API封装在编程框架和模型中,然后定义了一个简单的开发规则。开发GUI应用程序,这一抽象层正是我们所谓的“ UI”系统。例如,Android SDK是具有Android操作系统的API,它为UI系统提供了“ UI说明文件XML+Java Operation DOM”的UI系统,对于iOS的Uikit的视图,也是如此。他们都将操作系统API抽象为基本对象(例如2D图形的画布),然后定义一组描述UI的规则,例如UI Tree Construct.ui操作单线程原理,等等。
我们可以看到,Android SDK或iOS的Uikit的职责是相同的,它们只是不同的系统和底部系统。因此,您可以实现这样的UI系统:您可以使用相同的编程语言来开发,然后抽象一个界面。不同的操作系统API,适应不同操作系统的中间层,然后在编译和编译中间层代码时使用相应的相应对应的相对应?。
颤抖的原理就是这种情况。它提供了一组飞镖API,然后使用交叉平台绘图库(内部操作系统API)在底层的多端上实现一组代码。因为DART API还调用了操作系统API,性能接近本地。
请注意,尽管DART首次调用OpenGL,但OpenGL将调用操作系统API,但这仍然是本机渲染,因为OpenGL只是操作系统API.insruments的包装库,但没有性能损失。
在这一点上,我们已经引入了Flutter UI系统与操作系统之间的相互作用的一部分。现在,我们需要说应用程序开发人员定义的一些开发标准。实际上,在上一章中,我们已经对此标准非常熟悉。简要摘要是:组合和响应。我们希望开发一个UI接口,需要通过组合其他小部件来实现。在颤抖中,一切都是小部件。当UI想要更改时,我们不会直接修改DOM,而是让Flutter UI系统基于状态以重新构建UI。