| |
|
开发:
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显示系统学习回顾 |
看Android的显示系统相关资料有一段时间了,内容很多,很杂,一直没有贯穿起来。很多资料写的比较难懂。太多的概念,太多的浮云,正所谓“总为浮云能蔽日,长安不见使人愁”。 再看到开发者网站的简介时,似乎有所顿悟, 图形 ?|? Android 开源项目 ?|? Android Open Source Project 曾经通过获取surfaceFlinger中保存的各应用的GraphicBuffer来保存为图片,理解了GraphicBuffer的传送和使用,GraphicBuffer贯穿了上图的显示过程,status bar这些应用通过GPU渲染(使用OpenGL)把画面写到GraphicBuffer中,就是上图的蓝色方块BUFFER QUEUE(buffer queue是对GraphicBuffer使用的封装),然后,SurfaceFlinger中进行画面的合成,这个时候可以使用GPU合成(client),也可以使用HWC合成(device),具体的信息可以看HWC合成。 这样,初步的流程就打通了。然后就可以去看各处理细节。 之前有个疑问:SurfaceFlinger中已经有了各应用(layer)的GraphicBuffer画面,直接叠加计算得到新的内存数据不就行了么,为什么要搞那么复杂? 悟的太迟:叠加计算各坐标的像素值是CPU操作,这个处理太慢。所以就需要GPU和HWC方式。 以下HWC合成的介绍内容来自android官网资料 硬件混合渲染器 HAL ?|? Android 开源项目 ?|? Android Open Source Project 当您考虑使用叠加平面时,很容易发现这种方法的好处,它会在显示硬件(而不是 GPU)中合成多个缓冲区。例如,假设有一部普通 Android 手机,其屏幕方向为纵向,状态栏在顶部,导航栏在底部,其他区域显示应用内容。每个层的内容都在单独的缓冲区中。您可以使用以下任一方法处理合成:
后一种方法可以显著提高效率。 显示处理器功能差异很大。叠加层的数量(无论层是否可以旋转或混合)以及对定位和重叠的限制很难通过 API 表达。为了适应这些选项,HWC 会执行以下计算:
一些比较好的资料: Android图形显示系统——下层显示4:图层合成上(合成原理与3D合成) Android图形显示系统——下层显示4:图层合成上(合成原理与3D合成)_jxt1234and2010的专栏-CSDN博客 还有一位大牛的分享 https://windrunnerlihuan.com/page/2/ ? |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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/23 17:13:18- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |