Android与IOS渲染流程对比

这篇具有很好参考价值的文章主要介绍了Android与IOS渲染流程对比。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Android

CPU计算图元信息

GPU干预 几何阶段等后处理


Android

APP通过WindowManager统一提供所有Surface的缓冲区【不管是SurfaceView还是普通的布局流程都会将数据提交到Surface的BufferQuene中】 Java中的Surface是null,最终都是由Native层的Surface处理。

Native中的Surface持有的一个接口用于和bufferQuene交互,渲染到Surface上,其实是渲染到了BufferQuene中的GraphicBuffer,通过接口将GraphicBuffer提交到BufferQuene中

通过canvas的操作之前的版本渲染是在主线程执行会耗时卡死主线程,后续通过RenderThrad(FM层)单独处理渲染,主线程耗时操作不影响渲染处理,渲染过程中会使用到OPENGl 系统进程接收到BufferQuene之后SurfaceFlinger统一合成多个Surface也就是Layer

SurfaceFliger通过OpenGl生成图层放到缓冲区frameBuffer中,hwcomposer取出frameBuffer进行再次处理并放置到frameBuffer中。

Graph Core用于分配图形缓冲区,Display用于取出缓冲区数据进行展示

CPU计算图元信息

IOS的UIView对应一个CaLayer,Android的一个Window对应一个Surface(Surface也可由SurfaceView申请创建)

IOS的CALayer中有content属性存储要显示的bitmap数据(可由纹理2D图片直接使用),数据来源是由视图树的测量布局,渲染提交后将数据打包发送给RenderServer进程处理,RenderServer进程解析包,将其提交到缓冲区中,GPU进行读取进行几何阶段后面的处理

GPU干预 几何阶段等后处理

Android的是WindowManager将计算出所有的Window(Surface),也是通过CPU计算图元信息【测量布局绘制】,Surface中有一个BufferQuene类似于CALayer的content属性。

CPU计算图元信息的时侯只记录操作指令,具体的渲染操作由FM层维护的RenderServer线程去渲染通过openGl比较耗时 。

WindwoManager将所有信息给到SurfaceFlnger后,SurfaceFlinger先自己通过opengl操作一部分数据放到frameBuffer中,再通过hwComposer具体的合成策略去合成图层(本质也是几何阶段后面的处理),GraphCore用于分配图形缓冲区 Andrid和ios原理大致一样 都是CPU计算图元信息,IOS通过RenderServer进程去处理渲染,Android是FM层的RenderServer线程去处理渲染操作。 图元计算完成后都是GPU去取数据进行几何阶段后面的处理 。 Android除了用canvas设置Surface内容也可以使用OPENGL设置Surface。文章来源地址https://www.toymoban.com/news/detail-744123.html

到了这里,关于Android与IOS渲染流程对比的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity接入IAP内购(Android,IOS)最新流程,第一篇:内购接入

    你好! 这将是一个系列的文章 第一篇 介绍客户端里支付的调起以及购买。 第二篇 介绍后台对购买结果的验证以及发货(IOS)。 第三篇 介绍后台对购买结果的验证以及发货(Android)。 第四篇 介绍后台对内购退单问题的处理(IOS欺诈检测以及欺诈信息反馈)。 我们是用的

    2024年04月13日
    浏览(37)
  • [Android开发学iOS系列] iOS项目环境搭建和依赖管理

    一个项目总是会依赖一些库, 有些是第三方的, 有些可能是项目自身为了复用拆出去的. 现有主流的iOS依赖有多种形式, 比如CocoaPods, Carthage和swift package. 本文是一些环境搭建和使用项目依赖相关的笔记. 基本上iOS开发都要准备的环境, 这些设置是全局的, 在每个机器上设置一次就

    2024年04月08日
    浏览(30)
  • Android & iOS - Android Studio/Xcode历史版本下载(持续更新)

    最近升级开发工具老是遇到各种兼容性问题导致需要降回老版本,Xcode历史版本下载方便倒还好,Android Studio就麻烦了,一开始找到的官方历史版本下载还不全。这里整理一些历史版本信息方便下载,后续会持续更新。 历史版本数据来源Android Studio官方(语言必须选English,不

    2024年02月16日
    浏览(46)
  • uniapp音频组件,适配ios,Android

    有个需求是需要有音频的时长和拖动进度,我对音频使用只停留在使用audio标签,在uniapp插件市场未找到适合的组件,在通过百度只找到下面的组件,了解使用uniapp简单音频组件上提到的音频组件后进行优化如下: 1.不能在更新视频链接后更新音频组件的相关信息,使用了w

    2024年02月16日
    浏览(60)
  • Flutter 与原生交互(Android,iOS)

    本质上 Flutter 和 原生通信是通过 Channel 来完成的:Flutter中消息的传递是完全异步的; 消息使用 Channel(平台通道) 在客户端(UI) 和主机(p平台) Flutter 与 native端交互三种方式 1.BasicMessageChannel (用于传递字符串和半结构化信息,持续通信使用,例如dart端将服务器的数据陆续传入到

    2024年02月17日
    浏览(38)
  • Android、iOS快速全球化工具

    在进行移动端全球化的时候,我们需要根据语言类型准备格式相同,文本不同的好多个文件,如果一个一个翻译显然很浪费时间,如果整篇复制到Google翻译通常翻译出来的文本是没办法直接用的,所以我通过有道云API实现了一个翻译iOS全球化文件的工具类。Android可以重写文本

    2024年02月12日
    浏览(29)
  • Android/iOS内嵌Unity开发示例

    目录 前言 背景 正文 环境 新建工程 Unity导出 Android接入 如何使用 作为Activity 总结 1.Android调用Unity 2.Unity调用Android 3.C/C++“中转站” 参考资料 Unity 与 Android/iOS 交叉开发主要有两种方式,以 Android 为例,一是 Android 生成 jar 或者 aar 包,导入到 unity3d plugin/bin/ 目录下; 二是 U

    2024年02月02日
    浏览(29)
  • 手机如何访问电脑文件?(iOS和Android)

    “我需要在我的电脑上查看一个文件,但我现在在外面无法实际访问它。我可以通过手机访问我的电脑文件吗?” 答案当然是可以的,无论您使用的是iOS设备还是Android设备,您都可以通过手机远程访问您的电脑。一般,我们可以使用远程桌面软件在手机上控制电脑,然后再

    2024年02月13日
    浏览(40)
  • Flutter:Android/iOS集成Flutter模块

    一、Android工程集成Flutter模块工程: 1.使用命令创建Flutter模块工程lib_flutter(与Android工程属于同级目录): 2.更新Android工程配置: (1)将Android工程Support V4/V7包替换为AndroidX包,右键点击工程,在弹出菜单中选择 Refactor   Migrate to AndroidX...,然后在左下角弹出的框中,点击Do Refac

    2024年02月06日
    浏览(33)
  • Android/iOS性能测试工具-SoloX

    SoloX - Android/iOS性能数据实时采集工具。支持收集被测应用CPU、内存、FPS、流量等性能数据,进行图表化展示。 官网:GitHub - smart-test-ti/SoloX: SoloX - Real-time collection tool for Android/iOS performance data.(Android性能测试android performanceiOS性能测试ios performance移动端性能测试mobile perform

    2024年02月03日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包