IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 我所理解Android渲染流水线与优化 -> 正文阅读

[移动开发]我所理解Android渲染流水线与优化

概述

我们常常说进行UI上的优化,但是这类优化必须理解很多机制才能更好进行修缮。相关机制理论在其他平台开发也是通用的如WindowIOS等,只不过Window相比起其他平台有自己的实现标准比如DirectX

首先我们需要理解Vsync机制:
您可看google官方解释
Android Performance Patterns: Understanding VSYNC

为了知识的完整性 这里我再加上我自己的理解。

什么是渲染(rendering)?

就是把UI描述信息转化为用户可见的屏幕像素

我们把为了简单理解首先忽略大量渲染流水线细节来看看我们流程
在这里插入图片描述
UI描述可以简单理解我们在Android写的控件等。
CPUUI描述转为一些特定数据结构存在某个内存区域我们暂且把它称为Frame Buffer.

Profile GPU Rendering 工具相关基础知识可参考如下链接:

官方文档
官方文档2

Google 官方视频讲解
游戏测试 扒一扒安卓的渲染原理
渲染流水线
OPENES纹理
01-计算机原理|计算机图形渲染原理
Profile GPU Rendering
我们的视图View大致渲染流程(根据视频自己理解):
我们视图最终都会交付GPU进行渲染,最后我们的GPU在将数据显示到屏幕.

  1. 我们的View首先会转化为一些OpenGL所能理解绘制命令
  2. OpenGL会将这里绘制命令进行计算并最后交给GPU显示
  3. CPU等候GPU完成交换缓冲区.(GPU会存在多个缓冲区,一个用于用户屏幕显示,另一个作为绘制时使用)

我们View在执行相关回执函数后(Ondraw)执行后创建一个Java Display List 所谓的Java Display List可以理解位GPU所能理解一个数据结构的包装(这里GPU还是不能理解这些数据,只是方便OpenGL绘制)

在这里插入图片描述

ChoreographyVSYNC关系?
Choreography内部有一个回调,这个回调每秒中有60次,这其实也就是帧同步的间隔,而这个间隔调用是VSYNC所掌控的。触发这个回调时系统会将缓冲区进行交换到屏幕进行显示,同时这也是应用层正好做图像更新的最佳时刻比如测量与布局修改属性以及动画等,这个操作就在我们常说的UI线程.当我们UI线程处理完成后会将数据同步到一个渲染线程进行绘制

Drawn out: How Android renders (Google I/O '18)
在这里插入图片描述
那么渲染线程又做了什么?
其本质就是将我们javaUI描述转化为GPU所能理解的命令并将其转化为像素数据存在GPU某一个缓冲区中。
在这里插入图片描述
你可以在ASCPU Profiler里面查看到这个线程
在这里插入图片描述
当然我们这里还有些细节点,我们的View会在UI线程转化成一个DisplayList并与上一个生产DisplayList做出比较,计算出一个damage arear,这样可以很快只进行局部的绘制
在这里插入图片描述

在这里插入图片描述

Profile GPU Rendering 使用

掌握了上面的基础知识我们在使用Profile GPU Rendering将会轻松很多
使用 GPU 渲染模式分析工具进行分析

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-11-22 12:27:21  更:2021-11-22 12:28:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:29:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码