Symbian OS 9.5 版本中引入了ScreenPlay技术。ScreenPlay是一个新的图形架构,它可以使智能手机制造商充分利用软件性能的提升、硬件的加速及第三方的图形引擎。ScreenPlay就是所谓的新图形架构(New Graphics Architecture,简写为NGA)和GCE(Graphics Composition Engine)功能。

ScreenPlay的引入源自于手机硬件开发模型的需求,例如ScreenPlay可以支持图形加速、图形处理单元(GPU)和非均匀存储访问型(NUMA:Non-Uniform Memory Access)以及均匀存储访问型(UMA:Uniform Memory Access)。 非均匀存储型是GPU中的一个架构,它可以区分GPU与CUP的处理过程,GPU不能访问CPU内存,反之亦然。ScreenPlay可以在不同处理区域间不复制缓冲区的情况下处理非均匀存储型。

ScreenPlay重点概念

l         当有硬件图形加速设备时,基于硬件加速,异步渲染和组合图形,这通过硬件适配层(HAL)来实现。

l         合成半透明的动态内容UI缓冲区,这些动态内容来自于OpenGL ES游戏、视频、或摄像头取景器。

l         提供屏幕内容的安全保障和数字版权管理(DRM)。应用程序不再直接访问屏幕(DSA),屏幕读写操作有Window Server来控制。

l         DSA的支持仅仅是为了兼容性。

ScreenPlay架构

下图是ScreenPlay图形架构的概况。

在讲述ScreenPlay中新添加及更新的模块前,先做以下名词解释:

l         合成(Composition):将各种不同显示元素合在一起并呈现到屏幕设备上的过程。

l         GPU:图形处理器单元,专注于图形的显示处理。

l         Graphics surface:通常称为Surface,它是独立于硬件用来存放图片或部分场景的场所。可以理解为是一个存储区域。

l         硬件加速(Hardware acceleration):用硬件来实现诸如图形显示的功能,比在CUP中用软件实现要快。

l         图层(Layer):由GCE维护在图像合成时的一个显示元素。

l         场景结构(Scene structure):拥有特定大小、可见区域和显示顺序(Z order)的一系列图层,合成后成为一整个场景。

l         场景内容(Scene content):与场景结构相关的图层绑定的一系列surface。

图形合成引擎(Graphics Composition Engine, GCE)及GCE 后台(backend

GCE在将图像显示到屏幕之前,合成自于不同的图像源的图形。合成有两个重要的概念,即图层和Surface。其中图层描述了被显示元素的几何位置、大小及方向,而Surface是存放图像或部分场景的一些像素缓冲区。

GCE维护图层堆栈并计算显示内容。例如,选择不可见区域和维护需重画区域的列表。GCE后台在另外的线程中进行实际的合成工作,GEC后台在需要时进行像素混合和转换,如伸缩、旋转。GCE后台是一个适配组件,意味着手机制造商可以替换它,从而实现手机硬件自定义功能。GCE后台还可以利用GPU硬件合成和LCD硬件旋转。

这是Symbian OS 9.5 及ScreenPlay中新增的模块。

Surface管理器和Surface更新服务器

Surface管理器创建和管理Surface。Surface在实现时其实是一个共享的内存块,因为它必须能够被用户进程、内核进程及硬件合成器来访问。Surface可以分为多个缓冲区,分别用128位的数字ID来标识,称为Surface ID。Surface可以被Symbian OS中其他组件使用如多媒体框架(MMF)和摄像取景器,以及OpenGL ES 游戏等应用程序。Surface管理器是一个适配组件,可以被替换和定制。

Surface更新组件提供了一个GCE和其客户端的通信机制,这对客户端在快速更新和使用多缓冲Surface时非常有用。

这也是Symbian OS 9.5 及ScreenPlay中新增的模块。

Window Server

Window Server用一个渲染框架(render stage framwork)进行了扩展,允许Window Server在渲染图形的最后阶段通过插件自定义图形的渲染。这个过程称为“延迟渲染”,通过终端Window Server的输出,然后决定这些输出如何被渲染,例如,这些输出可以硬件加速,也可以被送到第三方的图形引擎。渲染框架(render stage framwork)允许手机制造商集成不同的UI和运行时环境(如Flash 或Silverlight),从而达到诸如缩放、渐变等效果。Symbian用DirectGDI技术提供了一个渲染插件,这意味着现在的Window Server程序可以利用硬件加速功能而不用重新编译代码。

在ScreenPlay中,内容渲染插件(Content-Rendering Plug-ins, CRP)可以将一个Surface呈现到屏幕上,这个技术可以被用来在一个窗体中显示多个小视频,其中每个视频对应一个特定的Surface。 ScreenPlay提供了Window Server 客户端API的扩展,允许手机设备相应指针事件,包括接近(Proximity)和压力(Pressure)事件。

DirectGDI

DirectGDI 提供了一个可以硬件加速的图形上下文和一个异步接口,DirectGDI有两部分,通用层和适配层。手机制造商可以用一个图形加速硬件或软件替换适配层。目前,DirectGDI主要用于Window Server的渲染插件中,客户端应用程序还不能直接使用。

DirectGDI也是Symbian OS 9.5 及ScreenPlay中新增的模块。

图形资源(Graphics Resource

在ScreenPlay中,一个图形资源是指硬件图形加速所使用的数据缓冲区。例如,一个图片就是一个数据缓冲,它是一个二维的像素缓冲区。和DirectGDI一样,图形资源组件提供了通用部分和适配部分。

Non-ScreenPlay架构

虽然Symbian OS 9.5中引入了ScreenPlay, 但它还同时提供了Non-ScreenPlay,即通过配置可以不使用ScreenPlay技术。下图显示了Non-ScreenPlay的架构:

可以看出,在Non-ScreenPlay中没有了渲染框架及GCE的概念,而是用HAL来访问帧缓冲(Frame Buffer),并由屏幕驱动(Screen Driver)提供简单的像素、扫描行和位图操作,硬件制造商通过Screen Driver来适配不同的硬件。上层的图形及文本处理有BitGDI来提供。下图是Non-ScreenPlay中的渲染堆栈图:

Symbian OS应用编程图形篇之架构相关推荐

  1. Symbian OS应用编程图形篇之字体(1)

    在介绍如何使用和显示Symbian OS 中的字体之前,我想应该先了解一下有关字体一些基本概念相关知识. Font .typeface and glyph Font是一套字符集,包括字母.数字和符号等 ...

  2. Symbian OS C++程序员编码诀窍

    版权©属于诺基亚公司( 2003年),诺基亚公司保留全部权利 "诺基亚"及"诺基亚科技以人为本"是诺基亚公司的注册商标.Java和所有基于Java的标志是Sun ...

  3. Symbian OS 9.2 Series 60 v3.0 FP1 和Symbian OS 9.1 Series 60 第三版

    首先,这个区别是9.2和9.1的区别,  它们都是S60V3平台上的两个版本的操作系统.不,应该说S60V3平台是基于Symbian OS的. 从表面上看,S60是Symbian操作系统的一种表现形式 ...

  4. T2080 U-BOOT与OS内核移植 准备篇(一)——开发调试环境简介

    T2080 U-BOOT与OS内核移植 准备篇(一)--开发调试环境简介 1.本项目选择的工具 2.几个常用工具简介 2.1 Trace32 2.2 Code Warrior 2.3 QorIQ Li ...

  5. 跟着Code走,详解Symbian OS API调用过程

    作为一个被Symbian开发折磨过的人,当得知Symbian开源时,忍不住马上跑到developer.symbian.org上瞧一瞧,看看自己具体是怎样被折磨的.看了一段时间之后,想想还是把有些东西记 ...

  6. Linux shell 脚本编程-实战篇(二)

    继: Linux shell 脚本编程-实战篇(一) 2. 创建与数据库.Web及电子邮件相关的脚本 2.1 MySQL 数据库 2.1.1 MySQL 数据库安装 到 http://repo.mys ...

  7. 技术小白成长之路 - 谷歌云端 GCP Cloud Engineering - 第一篇 - 核心架构 Core Infrastructure

    谷歌云端 GCP Cloud Engineering Certificate - 第一篇 - 核心架构 Core Infrastructure 谷歌云端平台GCP简介 1. 谷歌云端平台GCP资源层次 ...

  8. Shell编程进阶篇(完结)

    1.1 for循环语句 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行. 它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器,或 ...

  9. Symbian OS 精要

    一般诀窍 1.'Symbian 开发师网络'提供大量信息资源,协助您为 Symbian OS 操作系统编写应用程序.您应经常访问 www.symbian.com/developer 网站以便获取最新的 ...

最新文章

  1. C# try与finally(WinForm、Asp.Net)
  2. 不快乐工作场所的生存法则
  3. centos系统中kaptcha没有按指定的字体显示验证码问题解决
  4. 辅助模式最终考验的是想象力,先来看看怎么用!| Accessibility
  5. 【DP】Mobile Service(jzoj 1327)
  6. 当S8遇上边缘计算:谈阿里云ENS对直播业务场景的支撑
  7. PHP7.2的安装与配置(win7)
  8. 读书笔记—《销售铁军》随记7
  9. 你们喜欢一个人旅行,还是有人陪伴旅行?
  10. Atitit.收银机小票打印功能的设计  java php c#.net版本
  11. ubuntu16.04 创建配置并使用虚拟环境
  12. mysql索引失效情况
  13. PQ分区魔术师v9.0 中文版
  14. 美育在计算机教育中应用,浅谈在小学信息技术课堂中有效实施美育.
  15. 追思清明 浸润童心-----宁都县幼儿园清明祭英烈主题活动
  16. (2) [保护模式]段描述符
  17. 3D打印无人机等无人设备6——谈一谈从设计到实践的分分合合,模型如何合并与拆分?
  18. trackerslist GitHub12月无重复更新版
  19. CIFAR10攻略:基于TensorFlow2.1
  20. K近邻算法 模拟sklearn调用 自定义优化Knn算法模型 ---完整代码

热门文章

  1. [MTCTF]从出题人视角看ez_cms
  2. K12教育小初高各个版本教材内的章节数据
  3. 安徽农商行计算机类笔试考什么,2019安徽农商行社会招聘:笔试考什么?如何复习? 【附带笔试模拟题】...
  4. arcgis 提取值到点 如果该点的栅格值缺失怎么办?怎么把最近点的值赋给它?
  5. Windows Workflow Foundation(1)- Windows Workflow Foundation 概述
  6. 自动阅读是如何赚取收益的
  7. 20181113-1 版本控制报告
  8. 在线时间戳计算时间差
  9. 小红书商业生态产品负责人精卫:全面解锁小红书达人营销新玩法
  10. C语言项目 - 有理数类型