没有合适的资源?快使用搜索试试~ 我知道了~
首页Android图形系统分析-surfaceFlinger流程
资源详情
资源评论
资源推荐
第一章Android GDI 之基本原理及其总体
框架
Android GDI 基本框架
在 Android 中所涉及的概念和代码最多,最繁杂的就是 GDI 相关的代码了。但是本质
从抽象上来讲,这么多的代码和框架就干了一件事情:对显示缓冲区的操作和管理。
GDI 主要管理图形图像的输出,从整体方向上来看,GDI 可以被认为是一个物理屏幕使用
的管理器。因为在实际的产品中,我们需要在物理屏幕上输出不同的窗 口,而每个窗口认
为自己独占屏幕的使用,对所有窗口输出,应用程序不会关心物理屏幕是否被别的窗口占用,
而只是关心自己在本窗口的输出,至于输出是否能在 屏幕上看见,则需要 GDI 来管理。
从最上层到最底层的数据流的分析可以看到实际上 GDI 在上层为 GUI 提供一个抽象的
概念,就好像操作系统中的文件系统所提供文件,目录等抽象概念一 样,GDI 输出抽象成了
文本,画笔,位图操作等设备无关的操作,让应用程序员只需要面对逻辑的设备上下文进行输
出操作,而不要涉及到具体输出设备,以及输 出边界的管理。GDI 负责将文本、线条、位图等
概念对象映射到具体的物理设备,所以 GDI 的在大体方向上可以分为以下几大要素:
画布
字体
文本输出
绘画对象
位图输出
Android 的 GDI 系统
Android 的 GDI 系统所涉及到概念太多,加之使用了 OpenGL 使得 Android 的层次
和代码很繁杂。但是我们对于 Android 的 GDI 系统需要了解的方面不是他的静态的代码关
系,而是动态的对象关系,在逻辑运行的架构上理解 GDI。我们首先还是需要从代码结构开
始我们的理解。
Frameworks/Libs/Surfaceflinger
Frameworks/base/core/jni/android_view_Surface.cpp
Frameworks/base/core/java/android/view/surface.java
Frameworks/base/Graphics:绘图接口
Frameworks/Libs/Ui
External/Skia
其中 External/Skia 是一个 C++的 2D 图形引擎库,Android 的 2D 绘制系统都是建立
在该基础之上.Skia 完成了:文本输出,位图,点,线,图像解码等功能。在这里给出 Android
GDI 的基本框架示意图。
对于上面的 GDI 架构图我们只是一个大概的了解,我们有太多的问题需要解决,有太
多的疑问需要得到答案,我就一直在想,为什么设计者有提出如此众多的概 念,这个概念
的背景是什么?他要管理什么,他要抽象什么?从前面知道,Android 的整个设计理念就
是无边界化,他是如何穿透 Linux 进程这个鸿沟来 达到无边界的?Surface,Canvas,
Layer,LayerBase, NativeBuffer,SurfaceFlinger,SurfaceFlingerClient 这些到底是一
个什么东西?如何管理,传递的是什么? 创建的是什么?这些都是抽象的概念,绘画的终
极的缓冲区到底是如何管理的?缓冲区到底在哪里?
我们还是看看做终极的,最本质的设计概念,在从这些概念出发,来探讨这些概念的形
成过程,是否有必要去生成写概念。SurfaceFlinger 本质上干 什么的?SurfaceFlinger 的
确就是这个意义:应用程序通过 SurfaceFlinger 将自己的“Surface”投掷到屏幕缓冲区。
至于如何投掷的,我们将会在后面详细描述。
第二章Android GDI 之显示缓冲管理
Android GDI 之屏幕设备管理-动态链接库
万丈高楼从地起,从最根源的硬件帧缓冲区开始。我们知道显示 FrameBuffer 在系统
中就是一段内存,GDI 的工作就是把需要输出的内容放入到该段内存的某个位置。我们从基
本的点(像素点)和基本的缓冲区操作开始。
1 基本知识
1.1 点的格式
对于不同的 LCD 来讲,FrameBuffer 的二进制格式不一样,并且可以分为两部分:
1)点的格式:通常将 Depth,即表示多少位表示一个点。
1 位表示一个点
2 位表示一个点
16 位表示一个点
32 位表示一个点(Alpha 通道)
2) 点内格式:RGB 分量分布表示。
例如对于我们常见的 16 位表示一个点
1.2 格式之间的转换
所以屏幕输出实际上是一个值映射的关系。我们可以有如下的点格式转换,
源格式可能来自单色位图和彩色位图,对于具体的目标机来讲,我们的目标格式可能就
是一种,例如 16 位(5/6/5)格式。其实就只存在一种格式的转换,即从目标格式都是 16
位格式。
剩余29页未读,继续阅读
newpb80
- 粉丝: 18
- 资源: 213
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1