(计算机系统结构专业论文)基于symbian+os的面向手机3d游戏的图形引擎设计与实现.pdf_第1页
(计算机系统结构专业论文)基于symbian+os的面向手机3d游戏的图形引擎设计与实现.pdf_第2页
(计算机系统结构专业论文)基于symbian+os的面向手机3d游戏的图形引擎设计与实现.pdf_第3页
(计算机系统结构专业论文)基于symbian+os的面向手机3d游戏的图形引擎设计与实现.pdf_第4页
(计算机系统结构专业论文)基于symbian+os的面向手机3d游戏的图形引擎设计与实现.pdf_第5页
已阅读5页,还剩92页未读 继续免费阅读

(计算机系统结构专业论文)基于symbian+os的面向手机3d游戏的图形引擎设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 就最近几年的技术发展和国际市场趋势分析,智能手机无疑将是未来手机的 主流发展方向。而在目前的手机操作系统中,s y m b i a n 一直占据着无人撼动的主 导地位。另一方面移动平台3 d 图形引擎技术,在游戏、动画及g p s 定位系统中 的应用也越来越广泛。由于目前市场的迫切需求以及s y m b i a n 操作系统具有诸多 优点,本课题在此背景下被提出。在本课题中,我们根据手机移动平台的特点, 实现了一款基于s y m b i a n 操作系统的手机3 d 图形引擎。 本课题主要是面向3 d 游戏,在智能手机平台s y m b i a n 操作系统下,采用软 件渲染方式实现的一款8 位颜色模式三维图形引擎。理论基础是计算机图形学, 开发环境是s y m b i a n 操作系统上的c + + 编程。主要研究内容包括:计算机图形学、 3 d 数学、s y m b i a n 操作系统及其开发环境。 本课题的研究路线分为四个主要的阶段进行:文献阅读和理论学习阶段、理 论分析和方案设计阶段、应用程序开发阶段和论文撰写阶段。最终课题完成了3 d 数学引擎、三维坐标变换、基本光照、实体着色、2 d 、3 d 裁剪与剔除、仿射纹 理映射、深度缓存测试和b s p 二元空间划分等功能。 本文首先介绍了s y m b i a n 操作系统,包括开发环境的搭建,应用程序框架及 一些s y m b i a nc + + 编程基础,例如时钟对象的使用、按键处理、绘图操作等。然 后介绍了3 d 数学,这部分内容详细介绍了三维图形学中所涉及到的数学知识, 为后面的章节打下基础,包括定点数、三角函数、向量和矩阵等内容。在此基础 上,依次介绍了三维坐标系统、3 d 渲染和3 d 裁剪几个功能模块。3 d 渲染主要 包括光照、纹理以及光栅化等内容。3 d 裁剪主要包括裁剪和剔除、z 缓冲以及二 元空间划分等内容。最后总结了课题实现的功能,分析了接下来的工作。 由于手机平台内存容量和硬件性能的限制,许多功能无法按照常规的理论去 实现。针对这一问题,文中提出了许多特别的方法。例如光照,引擎采用了查找 颜色表的方式来实现,虽然效果不是十分完美,但是在精度要求不高的情况下, 可以满足一般的需求。再例如半透明的功能,引擎采用了创建a l p h a 混合表的方 式来实现,有效地减少了计算量。 关键字:图形学,3 d 图形引擎, 3 d 游戏,s y m b i a n ,智能手机 i a b s t r a c t a b s t r a c t h lr e c e n ty e a r s ,o nt h ed e v e l o p m e n to f t e c h n o l o g ya n di n t e r n a t i o n a lm a r k e tt r e n d s , s m a r tp h o n ew i l ln od o u b tb et h ef u t u r ed i r e c t i o no ft h em a i n s t r e a m a n dn o wi nt h e c e l lp h o n eo p e r a t i n gs y s t e m ,s y m b i a nh a so c c u p i e dt h ed o m i n a n tp o s i t i o nw h i c hn o n e c a ns h a k e m e a n w h i l ei nt h eg a m e s ,a n i m a t i o n s ,g p sa n do t h e rf i e l d s ,t h ea p p l i c a t i o n o fm o b i l e3 dg r a p h i c se n g i n et e c h n o l o g yi sm o r ea n dm o r ew i d e b e c a u s eo ft h e u r g e n tn e e d so ft h em a r k e ta n dt h ea d v a n t a g eo ft h es y m b i a no s ,t h i si s s u ew a sr a i s e d a c c o r d i n gt ot h ec h a r a c t e r i s t i c so fm o b i l ep l a t f o r m ,w ea c h i e v e dam o b i l e3 dg r a p h i c s e n 百n eb a s e d o ns y m b i a no si nt h i si s s u e i ti sas o f t3 dg r a p h i c se n g i n ea i ma t3 dg a m ei nt h es m a r tp h o n ep l a t f o r mo f s y m b i a no s a n dt h i se n s i n ei sb a s e do n8 b i tc o l o rm o d e t h ef o u n d a t i o no ft h i si s s u e i sc o m p u t e rg r a p h i c s 3 dm a t ha n d s y m b i a nc + + s oo u rm a i ns t u d yc o n t e n t si n c l u d e t h e3 p a r t sa b o v e - m e n t i o n e d t h e r ea r e4 s t a g e si nt h i ss t u d y ( 1 ) r e a d i n ga n ds t u d y i n gt h e o r e t i c a lk n o w l e d g e ( 2 ) a n a l y s i sa n dd e s i g n ( 3 ) a p p l i c a t i o nd e v e l o p m e n t ( 4 ) w r i t i n gp a p e r f i n a l l yt h e c o n t e n t sw h i c hw ef i n i s h e di n c l u d e3 dm a t h ,c o o r d i n a t et r a n s f o r m a t i o n ,b a s i cl i g h t i n g , c l i p p i n ga n dc a l l i n g ,t e x t u r em a p p i n g ,zb u f f e r , b s pa n ds oo n f i r s t l yw ei n t r o d u c et h es y m b i a no si nt h i sp a p e r i tc o n t a i n st h ec o n s t r u c t i n go f d e v e l o pe n v i r o n m e n t t h ea p p l i c a t i o ns t r u c t u r ea n dt h es y m b i a nc + + b a s es u c ha st h e u s eo ft i m eo b j e c t ,k e yp r o c e s s i n g ,p a i n t i n gf u n c t i o na n ds oo n n e x tw ei n t r o d u c et h e 3 dm a t hi n c l u d eo ff i x e dp o i n t ,t r i g o n o m e t r i c , v e c t o r , m a t r i xa n ds oo n t h e nw e i n t r o d u c ec o o r d i n a t et r a n s f o r m a t i o n ,3 dr e n d e ra n d3 dc l i p p i n gi nt u r n i nt h ep a r to f 3 dr e n d e ri tc o n s i s t so fl i s h r i n g ,t e x t u r e ,r a s t e ra n ds oo n a n di tc o n s i s t so fc l i p p i n g , c u l l i n g , zb u f f e r , b s pa n ds oo ni nt h ep a r to f3 dc l i p p i n g i nt h ee n dw em a k ea s u m m a r ) ,o f t h i si s s u ea n dd i s c u s st h en e x tw o r k b e c a u s eo ft h el i m i to fm e m o r ys i z ea n dh a r d w a r ec a p a b i l i t y , m a n ye f f e c t sc a nn o t b ea c h i e v e da c c o r d i n gt oc o n v e n t i o n a lm e t h o d s s ow eu s eal o to f s p e c i a lm e t h o d s f o r e x a m p l e ,w eu s eac o l o rt a b l et oa c h i e v el i g h t i n g a l t h o u g ht h er e s u l t sa r en o tp e r f e c t , i tc a nm e e tt h ed e m a n df o rg e n e r a l a n dw eu s eaa l p h at a b l et oa c h i e v ea l p h ab l e n d t t a b s t r a c t t h i sa p p r o a c he f f e c t i v e l yr e d u c e dt h ea m o u n to f c o m p u t a t i o n k e yw o r d s :c o m p u t e rg r a p h i c s ,3 dg r a p h i c se n g i n e ,3 dg a m e ,s y m b i a n ,s m a r tp h o n e i i i 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:耋i l 堡翌日期:砷年争月日 关于论文使用授权的说明 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:自至堡导师签名:乏疸:! 三 日期:叼年争月留日 第一章绪论 1 1 课题来源及意义 第一章绪论 在过去的1 0 年中,三维计算机技术无疑是世界数字媒体领域发展最为迅猛的 一股力量。在电脑游戏、互联网以及数字电影领域,3 d 图形技术可以说是大放异 彩,尤其是三维网络游戏。而另一方面,从2 0 0 3 年至今,手机业掀起了两次声势 浩大的革命:一次是彩屏手机迅速将黑白手机逐出主流市场;一次是百万像素拍 照手机的普及风暴。这两次革命是人们对数字娱乐需求不断提高以及科技进步的 必然结果。从近期技术发展和国际流行趋势分析,目前第三次革命正在悄悄走入 我们的视野,那就是移动3 d 图形引擎技术,它必将续写三维计算机技术在 传统计算机领域的神话,带给我们一整套三维互动娱乐的新体验。 据报道,全球视频游戏市场将由2 0 0 4 年的2 5 4 亿美元增长到2 0 0 9 年的近5 5 0 亿美元,年复合增长率为1 6 5 。而其中无线游戏市场将由2 0 0 4 年的2 8 1 亿美 元增长至2 0 0 9 年的2 1 亿美元,年复合增长率为4 9 3 。对于国内市场而言,根 据i d c 公布的在线游戏业内报告发现,2 0 0 4 年中国在线游戏营业额达到了 2 5 亿人民币,2 0 0 5 年达到3 5 亿元人民币。预计今后几年仍将保持较快增长,到 2 0 0 9 年,包括无线游戏在内的在线游戏营业额可望达到1 1 0 亿元人民币。 就最近几年的技术发展和国际市场趋势分析,智能手机无疑将是未来手机的 主流发展方向。而目前市场上的手机操作系统主要有四类:s y m b i a n 、p a l m 、l i n u x 和w i n d o w s m o b i l e 。从2 0 0 2 年至今,s y m b i a n 在智能手机操作系统上的霸主地位 一直无人撼动,目前大约占据了全球8 0 以上的市场份额。s y m b i a n 是一个由诺 基亚、摩托罗拉、爱立信、三菱和p s i o n 共同投资成立的合资企业,其目的是为 了设计一种能够应用于手机及类似移动通讯设各之上的、具有强大支持能力和开 放性的操作系统,并通过这个系统的应用,推动高端智能移动电话及类似终端产 品的发展。从1 9 9 8 年6 月成立s y m b i a n 至今,已经先后又有西门予、三星、松 下、索尼爱立信等多家手机厂商加盟该企业。 s y m b i a n 操作系统的优点:它是一种高性能的3 2 位抢占式多任务操作系统, 采用了先进的设计思路,具有优良的连接性和强大的扩展性,并能有效的减少电 能的消耗,非常适合体积小、功能强、资源有限的移动通讯终端设备使用。s y m b i a n 电子科技大学硕士学位论文 o s 是用c + + 语言编写,它是一个完全面向对象的操作系统。这使得它具有极强 的灵活性、有效性,并拥有代码重用的能力。该系统采用c + + 类型的应用程序接 口,可以十分有效的管理同时进行的多个任务和设备内存,有效的、最大限度的 减少占用中央处理器和消耗内存的操作。 s y m b i a n 操作系统的发展优势:由于支持s y m b i a n 操作系统的移动通讯终端 设备厂商众多,因此市场上有相对较多的支持该系统的不同品牌和型号的终端产 品,从而使得这个操作系统能够被迅速的推向市场,进而被消费者所接收和认可, 而消费者本身也拥有了更多的产品选择。同时,由于这个系统为第三方应用程序 开发商提供了一个开放、标准的开发平台,因此,这些开发商一方面可以很容易 的开发、设计相关的应用程序,另一方面也拥有了较多的可以使用、运行的终端 产品,有利于开发商的市场扩展。目前市场对于手机3 d 图形引擎的迫切需求以 及s y m b i a n 操作系统具有诸多优点及优势,本课题正是在这样的背景下提出的。 目前在世界范围内,许多手机硬件及软件厂商都相继进入了手机3 d 图形系统 的领域。k h r o n o s 组织发起了o p e n g le s 标准的制定。o p e n g le s 的全称是 o p e n g le m b e d d e ds y s t e m ( 嵌入式o p e n g l 系统) ,它在手机设备中所扮演的角 色和o p e n g l 在p c 上的一样,提供底层的显示函数以供调用。o p e n g le s 作为 一种手机3 d 应用编程接口,正在为软件和芯片设计师铺平道路,以允许人们以 一种标准的方式将3 d 图形加速器添加到手机之中。与此同时,微软也在开发面 向掌上设备的3 da p i 。他们已经在新版w i n d o w sm o b i l e 操作系统中加入了对 d i r e c t x 的支持。 而在国内,e l 前仅仅是停留在购买国外先进技术或与国外厂商合作开发的阶 段。但还是有部分企业及院校开发了或正在研发一些拥有自主知识产权的手机3 d 图形引擎,虽然技术水平和国外尚有一定的差距,但还是看到了国内在这一领域 赶超世界的步伐。 1 2 研究内容 本课题主要是面向3 d 游戏,在智能手机平台,s y m b i a n 操作系统下,采用软 件渲染方式实现一款8 位颜色索引模式的3 维图形引擎。理论基础是计算机图形 学,开发环境是s y m b i a n 操作系统上的c + + 编程。主要研究内容包括;计算机图 形学、3 d 数学、s y m b i a n 操作系统及其开发环境。 主要研究内容有: 2 第一章绪论 ( 1 ) 计算机图形学。它3 d 图形引擎的基础,从最基本的直线生成、多边形 光栅化到复杂的光照、纹理映射,无处不涉及到图形学的理论知识。 ( 2 ) 3 d 数学。相对图形学来说,是更为基础的部分。因为整个3 d 图形引擎 的开发,从本质上来说,都是在和数学打交道。无论是物体的坐标变换,还是复 杂的光照计算,都要灵活运用到各种数学知识。 ( 3 ) s y m b i a n 操作系统开发环境。因为项目的开发平台是基于手机平台的 s y m b i a n 操作系统,所以对s y m b i a n 操作系统本身及其开发环境的研究也是必不 可少的一项关键内容。 1 3 系统框架介绍 一个完整的3 d 游戏引擎主要包括3 d 图形引擎、游戏逻辑系统、输入输出系 统、动画系统、物理引擎、人工智能系统等部分。如图1 1 所示,是一个完整的 3 d 游戏引擎结构。 图卜13 d 游戏引擎系统结构 在3 d 游戏中,整个系统涵盖的内容很多,正如图1 - 1 所示。在本课题中,我 们主要的研究是3 d 图形引擎部分。如图1 2 所示,是本系统的框架设计图。其 中3 d 数学主要包括定点数、三角函数,向量和矩阵等数学基础库,它足3 d 渲染 模块和3 d 裁剪模块的基础。3 d 渲染模块主要包括光照、纹理映射以及光栅化等 内容。3 d 裁剪模块主要包括裁剪和剔除、z 缓冲以及二元空间划分等内容。然后 还需要一个s y m b i a n 应用程序框架,通过它来实现与操作系统底层的通信,完成 屏幕的显示,这部分主要通过操作系统提供的接口函数来实现。 3 电子科技大学硕士学位论文 1 4 本章小结 图卜23 d 图形引擎系统结构图 本章属于论文的引言部分。主要介绍了本课题的研究背景及意义,并对课题 研究的主要内容和系统的框架进行了介绍。下面是整个论文的章节的安排。 本论文共分七章,各章的主要内容如下: 第一章为绪论,简要阐述论文的研究主题、背景和意义。 第二章是对s y m b i a n 操作系统及其相关开发技术的介绍。 第三章是3 d 数学和坐标变换部分。 第四章对3 d 渲染相关技术进行介绍,包括三角形的光栅化、光照系统、纹理 映射等高级内容。 第五章是3 d 裁剪和可见性相关内容,包括物体裁剪剔除、z 缓冲以及二元空 间划分等内容。 第六章是测试部分。 第七章是论文的结束部分。对本论文的研究工作进行了总结,并对今后在该 领域里进一步的理论研究工作进行了展望。 第二章s y m b i a n 及其开发环境 2 1s y m b i a n 概述 第二章s y m bj a n 及其开发环境 1 9 9 8 年6 月,由爱立信、诺基亚、摩托罗拉和t s i o a 共同出资,筹建了s y m b i a n 公司。s y m b i a n 公司以开发和供应先进、开放、标准的手机操作系统s y m b i a n o s 为目标。s y m b i a n 公司同时向那些希望开发基于s y m b i a no s 产品的厂商发放 软件许可证。如今,围绕着s y m b i a no s 开发和生产的一系列软硬件产品,在全 球掌上电脑和智能手机市场上占据了大部分的份额。 由于支持s y m b i a n 操作系统的移动通讯终端设备厂商众多,因此市场上有相 对较多的支持该系统的不同品牌和型号的终端产品,从而使得这个操作系统能够 被迅速的推向市场,进而被消费者所接收和认可,而消费者本身也拥有了更多的 产品选择。同时,由于这个系统为第三方应用程序开发商提供了一个开放、标准 的开发平台,因此,这些开发商一方面可以很容易的开发、设计相关的应用程序, 另一方面也拥有了较多的可以使用、运行的终端产品,有利于开发商的市场扩展。 s y m b i a no s 手机的主要部件包括: ( 1 ) 一个c p u :s y m b i a n o s 的c p u 是3 2 位的,现有的主要是基于1 0 4 m h z 至2 2 0 m h z 的a r mc p u ,有些高端的手机则是基于a r m 9 的。 ( 2 ) 一个r o m :r o m 在我们的p c 机上同样存在,但p c 机上的r o m 只 包含一个很小的启动载入程序和b i o s ,而在s y m b i a no s 中r o m 被映射成z 盘。 r o m 中的所有内容既可以作为z 盘上的文件夹来访问,也可以直接从r o m 读取 数据。 ( 3 ) 系统r a m :r a m 主要用于活动程序和系统内核,另外作为用户使用的 磁盘空间,作为c 盘访问,相当于w i n d o w s 的c 盘,是用来放置s y m b i a no s 的 地方,一般机器的r a i v i 有8 m b 或1 6 m b 左右。 ( 4 ) i o 设备:可能是手写输入的显示屏,紧凑式的键盘,或是内存卡( 作 为d 盘访问) ,或是其他连接端口,红外线和蓝牙等。 ( 5 ) 电源:包括主电池以及外部电源。 s y m b i a n 操作系统是一种高性能的3 2 位抢占式多任务操作系统,采用了先进 的设计思路,具有优良的连接性和强大的扩展性,并能有效的减少电能的消耗, 电予科技大学硕士学位论文 非常适合体积小、功能强、资源有限的移动通讯终端设备使用。s y m b i a no s 是用 c + 十语言编写,它是一个完全面向对象的操作系统。这使得它具有极强的灵活性、 有效性,并拥有代码重用的能力。该系统采用c + + 类型的应用程序接口,可以十 分有效的管理同时进行的多个任务和设备内存,有效的、最大限度的减少占用中 央处理器和消耗内存的操作。总的来说,它如下几个基本特点。 ( i ) 操作系统是运行在r o m 上的。 ( 2 ) 系统是运行在电池驱动的设备上的。 ( 3 ) 完全是面向对象的。 ( 4 ) 基于组件的设计。 ( 5 ) 被设计成确保用户的数据不会丢失。 ( 6 ) 简单的u i 系统。 s y m b i a n 是一个真正的微核操作系统。所谓“微核”,就是说操作系统只有很 小的一部分是运行在最高优先级的,其他的功能都是以c l i e n t s e r v e r 的方式提供。 下面是s y m b i a n 的系统内部结构层: ( 1 ) 应用层:s h e l l 、o p l 、及其他应用程序。 ( 2 ) 系统层:包括菜单( m e n u ) 、对话框( d i g l o g ) 、工具栏( t o o l b a r ) 在内的高级 控件、j a v a 虚拟机o a v a v m ) 、应用程序框架( a p p l i c a t i o nf r a m e w o r k ) 等。 ( 3 ) 服务层:窗体服务器( w i n d o ws e r v e r ) 、进程服务器( p r o c e s ss e w e r ) 、声 音服务器( s o u n ds e r v e r ) 、数据库服务器( d a t a b a s es e r v e r ) 、文件服务器( f i l es e r v e 0 等各种服务器以及网络通信协议。 ( 4 ) 内核;e u s e r a l l 、e k e m e x e 、服务控制器( s u p e r v i s o rs e r v e r ) 和m u ( 设 备抽象层) 。 ( 5 ) 驱动程序层:包括音频驱动、显示驱动、m m c 驱动、键盘驱动、串并 口驱动、d s p 驱动、时钟控制器驱动等等。 2 2 开发环境搭建 ( 1 ) 系统及环境要求 系统要求:w i n 2 0 0 0s p 3 以上,w i n x ps p l 以上,w i n 2 0 0 3 中任意一种。 s y m b i a ns d k :项目主要针对s y m b i a n $ 6 0 的开发环境,选择的是s y m b i a i lo s 6 1 和s y m b i a no s8 0 a 两个版本的s d k 。其中6 1 是$ 6 0s d k 的最低版本,为保 证平台通的通用性,最终的发布版本须保证这个版本能编译通过;而8 0 a 包含详 第二章s y m b i a n 及其开发环境 细的开发文档,以及良好的p c 模拟器支持性,所以主要用于开发过程中的编译 模拟。 i d e 开发工具:m i c r o s o f tv i s u a ls t u d i o n e t2 0 0 3 。 ( 2 ) 软件安装 在安装s d k 以前保证下列1 至3 步先被正确安装。s d k 和i d e 要安装在电 脑上的同一个分区。s d k 的安装路径不能含有空格。下面详细说明需要安装的软 件及其步骤: 第1 步:安装a c t i v e p e r l 。p e r l 是一种脚本语言,配置s y m b i a n 开发环境中需 要该语言的支持。笔者安装的版本是a c t i v e p e r l 5 6 1 6 3 8 m s w i n 3 2 x 8 6 ,该软件 可以到官方网站下载:h t t p :w w w a c t i v e s t a t e c o m p r o d u c t s a c t i v e p e r l 第2 步:安装j a v a r u n - t i m e ,笔者安装的是j d k l 。5 和j r e l 5 ,该软件可以 到官方网站下载:h t t p :j a v a s u l i c o r n d o w n l o a d s i n d e x h t m l 第3 步:安装i d e ,如前所述,安装m i c r o s o f tv i s u a ls t u d i o n e t2 0 0 3 第4 步:安装s d k ,注意前面所说的s d k 的安装路径不能含有空格。并且要 和i d e 装在同一个分区,这样可以避免一些麻烦。下载地址: h t t p :w w w f o r u m n o k i a c o r n m a i n 0 ,6 5 6 6 ,0 3 4 - 4 ,0 0 h t m l 第5 步:安装n o k i ad e v e l o p e rs u i t e c a r b i d e v s 。这相当于v s 2 0 0 3 的一 个插件,用于帮助你导入或者建立$ 6 0 工程。下载地址: h t t p :w w w f o r u m n o k i a c o m m a i n r e s o u r c e s t o o l s a n d s d k s c a r b i d e i n d e x h t m l 2 3 $ 6 0 应用程序框架 我们先来看看s y m b i a n $ 6 0 系列的“应用程序架构”,所谓“应用程序架构” 是指应用程序框架类的集合。基于所需的u i 设计,应用程序可以具有稍微不同 的架构,但是每种架构都有一些公共部分,称为“核心应用程序类”。这些“核心 应用程序类”是所有应用程序框架的基础,它们组成了所有应用程序的架构,并 且它们也封装了应用程序和所需o s 服务器之间的相互作用。这些类包括:视图 ( v i e w ) 、文档( d o c u m e n t ) 、应用程序( a p p l i c a t i o n ) 、应用程序u i ( a p p l i c a t i o n u d 。一个程序只能有一个视图,可以有多个视图。 7 电子科技大学硕士学位论文 。 c b a s el。 b : e 、 ; , ,i。ic a c i i v c # i a u u a r ciiic o r e | r t 图c a p a a p p h c a t l o r llic a p a d o c u m e n t iic c o e a p p u , b a s el 巨 + , 争 l f * | c c o e a p p u i lc c o e e n v | c c o e c o n t r o lf pl “ u k 。i i ic e k a p p l t c m 0 r l 【ic e i k d 。c u r e e n t c e l k a p p u i ic e t k o n e n v illl a v k o r l ;广商栅, hc a k n a p p l l c a t o nfic a k n d o c u m e n t l | c a k n v i e w i ; ic a k n v i e w a p p u if o r u s e r ,艮 c m y a p p l i e a t l o nii c m y d o e u m e n t f c m y a p p u ii c m y v i e w c m y c o n t a m e rf 图2 一i $ 6 0 应用程序结构图 如图2 - 1 所示整个“核心应用程序类”的层次结构,共包含5 层。 第一层:c b a s e 和c a c t i v e 两个基类,其中c a c t i v e 也是派生于c b a s e ,而 c a c t i v e 又被第二层的c c o n e n v 派生 第二层:包含两个基本组件:a p p a r c 和c o n e 。a p p a r c 代表“应用程序架构”, 这些类提供了基本的应用程序结构、将系统信息提交到应用程序的机制,以及使 用文件服务器持久化数据。其中的类在命名时都带有前缀一a p a ”。c o n e 是控制 环境的缩写,在这个组件中的类提供用于处理用户输入并创建用户界面的机制一 一这些类主要用于和窗口服务器进行交互,其中的类在命名时都带有前缀“* c o e 。 这一层中的许多类都是抽象类,仅仅定义了一个a p i 的接口。 第三层:u i k o n 组件。这是具有丰富功能、非抽象框架类的一般性设备无关实 现,并且提供了一个在所有s y m b i a no s 上公用的u i 库层。一些具体的u i 控件 ( 比如列表框和滚动条等) 都可以在该层创建,这些控件有时也被称为e i k o n 控 件。u i k o n 组件中的类在命名时都带有前缀“t e i k ”。添加了一个公共的s y m b i a no s 实现,和其他s y m b i a no su i 平台共享。 第四层:由a v k o n 类组成,这些类提供了核心的$ 6 0u i 功能,例如菜单支持。 第二章s y m b i a n 其开发环境 a v k o n 控件的类在命名时都带有前缀“t a k n ”。在框架上添加$ 6 0 特有的实现。 第五层:针对应用程序的层,设计用户自己的应用程序,添加自定义应用程 序实现。 下面来实现自己的应用程序结构,我们采用的是基于传统s y m b i a n o s 控件结 构,如图2 2 所示。 图2 - 2 基于控件的应用程序结构图 ( 1 ) c m y a p p l i c a t i o n :继承自类c e i k a p p l i c a t i o n ,它是整个应用程序框架的 启动对象,同时它将会创建一个d o c u m e n t 对象。 ( 2 ) c m y d o c u m e n t :继承自类c e k i d o c u m e n t ,它主要用来存储应用程序的 执行状态。一个应用程序必须包含一个d o c u m e n t 类的实例,它将用来完成创建 c m y a p p u i 的创建和启动工作。 ( 3 ) c m y a p p u i :继承自c a k n v i e w a p p u i ,主要负责应用程序级的事件响应 与处理,例如打开或关闭一个文件。 ( 4 ) c m y c o n t a i n e r :继承自c c o e c o n t m l ,它主要用于完成屏幕的显示工作。 ( 5 ) c m y e n g i n e :这个类就是引擎本身,它完全独立于应用程序框架的其他 类。 下面是各个类的定义: c l a s sc m y a p p l i c a t i o n :p u b l i cc e i k a p p l i c a t i o n ( p r i v a t e : c a p a d o c u m e n t 。c r e a t e d o c u m e n t l 0 ; p r i v a t e : t u i d a p p d l l u i d 0c o n s t ; 9 电子科技大学硕士学位论文 c l a s sc m y d o c u m e n t :p u b l i cc e i k d o c u m e n t p u b l i c : c m y d o c u m e n t ( c e i k a p p l i c a t i o n & a a p p ) ; p r i v a t e : c e i k a p p u i 8c r e a t e a p p u i l 0 ; ; c l a s sc m y a p p u i :p u b l i cc a k n a p p u i p u b l i c : v o i dc o n s t r u c t l ( v o i d ) ; - c m y a p p u i 0 ; p u b l i c : v o i dh a n d l e w s e v e n t l _ ( c o n s tt w s e v e n t & a e v e n t , c c o e c o n t r o l 8a d e s t i n a t i o n ) ; p r i v a t e : c m y c o n t a i n e r 8i a p p c o n t a i n e r ; ; c l a s sc m y c o n t a i n e r :p u b l i cc c o e c o n t r o l p u b l i c : v o i dc o n s t r u c t l _ ( c o n s tt r e c t & a r e c t ) ; 一c m y c o n t a i n e r 0 ; p u b l i c : v o i d r u n ( v o i d ) ; v o i d s t o p ( v o i d ) ; t b o o l l s r u n n i n g ( v o i d ) ; s t a t i ct i n t o n e f r a m e ( t a n y a p t r ) ;脸局状态更新函数 p r i v a t e : 1 0 第二章s y m b i a n 及其开发环境 t k e y r e s p o n s eo f f e r k e y e v e n t l ( c o n s tt k e y e v e n t & a k e y e v e n t , t e v e n t c o d ea t y p e ) ; p r i v a t e : e n g i n e m _ p e n g ; r w s s e s s i o n 。m c l i e n t ; c l d l e 4 m _ i d l e ; ) ; 2 4 活动对象及其使用 我们的引擎本身 时钟对象 s y m b i a no s 是一个多任务的操作系统,那么为了实现多任务,同时使系统能 够快速响应,高效的进行事件处理,并减轻应用程序员的工作负担s y m b i a no s 特意引入了活动对象的概念。 一般操作系统为了实现多任务,往往使用多线程实现,当然s y m b i a n 也是支 持多线程的。但是,在同一个线程中运行的活动对象之间进行切换的代价要比线 程上下文的切换代价低,这使得对于各种资源比较紧张的s y m b i a no s 来说,使 得活动对象更适合事件驱动多任务。 线程间上下文切换和同一线程的活动对象之间传递控制权,在速度上的差别 可能会有1 0 倍之差,另外,一个线程大约在内核中有4 k b 的空间开销,在用户 空间上有8 k b 的用于程序栈的空间开销,而一个活动对象的开销可能只有几百字 节,甚至更小。 一个活动对象必须派生自基类c a c t i v e 【3 】,下面是类c a c t i v e 的定义。 c l a s sc a c t i v e :p u b l i cc b a s e t p u b l i c : e n u mt p r i o r i t y e p r i o r i t y l d l e = - 1 0 0 ; e p r i o r i t y l o w = 一2 0 ; e p r i o r i t y s t a n d a r d = o : e p r i o r i t y u s e r l n p u t = 1 0 ; e p r i o r i t y h i g h = 2 0 ; 1 1 电子科技大学硕士学位论文 p u b l i c : i m p o r t _ c c a c t i v eo ; i m p o r tcv o i dc a n c e lo ;删除未完成请求的函数 i m p o r t _ cv o i ds e t p r i o r i t y ( t i n ta p r i o r i t y ) ; l n l i n et b o o ll s a c t i v e0c o n s t ; p r o t e c t e d : i m p o r tcc a c t i v e ( t i n ta p r i o r i t y ) ; i m p o r tcv o i ds e t a c t i v eo ; v i r t u a lv o i dd o c a n c e l0 = 0 ;两个纯虚函数,继承类必须实现它们 v i r t u a lv o i dr u n l0 = o ;处理函数 i m p o r t _ cv i r t u a lt i n tr u n e r r o r ( t i n ta e r r o r ) ; p u b l i c : t r e q u e s t s t a t u si s t a t u s ;代表请求状态 p r i v a t e : t b o o li a c t i v e ; 通过上面的c a c t i v e 声明可以看出:活动对象和线程类似,构造时也会有一 个优先级值来决定它们如何被调度,通常为活动对象提供一个标准优先级 e p r i o r i t y s t a n d a r d 。当活动对象响应的异步服务完成时,就会产生一个事件。活动 调度器会侦测到事件,并决定每个事件对应的是哪个活动对象,然后调用恰当的 活动对象去处理事件。当活动对象处理事件时,直到事件处理函数返回到活动调 度器,该对象都是无法被抢占的,也就是说,r u n l ( ) 事件处理函数是一个原子 操作。 在s y m b i a no s 中,活动对象相互协作并顺序的实现多任务,也不需要对共享 的资源进行同步保护。另外,因为活动对象在同一个线程中运行,所以可以更容 易地共享内存和对象,尽管活动对象存在于同一线程,但它们仍然是各自独立运 行的,这就好像同一个进程中的线程是独立运行的一样。 第二章s y m b i a n 及其开发环境 2 5 时钟及其使用 我们的引擎需要一个时钟,它用来周期性的触发屏幕刷新,更新游戏中角色 的位置以及处理其他一些事件。这里我们使用类c m i c ,它是一个活动对象,并接 受一个回调函数,周期性地执行其完成指定任务。它主要包含下列方法: ( 1 ) s t a t i cc l d l e * n e w l ( t i n ta p r i o r i t y ) 。初始化一个c l d l e 时钟对象,并将其 添加到活动对象序列。参数t i n ta p d o r i t y 用来指定对象的优先级。 ( 2 ) v o i ds t a r t ( t c a l l b a c ka c a l l b a c k ) 。开启时钟,并周期性的执行制定任务。 这里的指定任务是指回调函数c

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论