1、 本科毕业设计 ( 20 届) 基于 OpenGL ES 技术的 Windows Mobile设备文字图形开发 所在学院 专业班级 电子信息工程 学生姓名 学号 指导教师 职称 完成日期 年 月 - 1 - 摘 要 随着移动设备的快速发展,人们对局限于电话和短信等传统平台应用已经不再满足,而 是越来越注重使移动设备的功能更加娱乐化、多样化,手机 3D游戏、导航系统等应用展现了未来的发展方向。 3G时代正慢慢融入我们的日常生活,各种各样的手机操作系统,也成为开发商们相互竞争的资本。好的操作系统不仅可以为开发商牟取高利润,还能为用户提供最简单,最周到的服务。开发手机系统必须掌握各种技术,本文将介绍
2、如何基于 OpenGL ES 技术对移动设备上的文字图像进行开发。 当前的 Windows Mobile设备是一个通用的移动开发平台,具备了实时宽带连接的能力。对 Windows Mobile设备进行基于 OpenGL ES的文字图形开发,具有重要的实践意义和广泛的应用前景。本课题首先介绍了 OpenGL ES 技术,以及Windows Mobile设备上 OpenGL ES的使用方法。然后熟悉 Visual Studio 2008的开发环境,了解 C#程序的写法,通过学习和理解纂写所需要的软件需求文档。最后根据软件需求分析,列出所需要实现的功能,并且利用 Visual Studio 2008
3、来实现,同时在真实设备中进行调试。 关键词 : 移动设备; OpenGL ES;文字图形开发 - 2 - Abstract With the continuous development of mobile devices, people are not only satisfied with the application of mobile communications equipment in the traditional platform such as communication, note, but also in the he future development direct
4、ion of mobile devices such as diversification of mobile communications device capabilities, entertainment, mobile games, navigation systems etc. 3G communication technology is gradually integrated into our daily lives. A variety of mobile operating systems are becoming competing capital of developer
5、s. A good operating system can not only get high profits for the developers, but also to provide users with the simplest, most attentive service. Development of mobile systems needs various techniques. This paper describes that how to develop text and picture application based on OpenGL ES technolog
6、y on the mobile device. The current Windows Mobile device is a universal mobile development platform with real-time broadband connectivity capabilities. Windows Mobile devices based on the OpenGL ES with text graphics development has important practical significance and wide application prospects. F
7、irst of all, the subject of OpenGL ES technology and OpenGL ES on Windows Mobile devices is introduced. Then we are familiar with Visual Studio 2008 development environment, understanding of C # program written by learning and understanding software requirements documentation. Finally, according to
8、software requirements analysis, listing the functions needed to implement and implement them in Visual Studio 2008, and debug in a real device. Key word: mobile devices; OpenGL ES; text graphics development - 3 - 目 录 1 引言 .1 1.1 研究背景 .1 1.2 研究内容 .1 1.3 研究现状 .2 2 OPENGL ES 技术的开发原理 .4 2.1 OPENGL ES 的介
9、绍 .4 2.2 OPENGL ES 的优势 .5 2.3 OPENGL ES 库的结构化设计 .6 2.3.1 模块化结构设计 .6 2.3.2 多级结构设计 .7 3 WINDOWS MOBILE 设备文字和图形开发 .9 3.1 开发环境 VISUAL STUDIO 2008 介绍 .9 3.2 OPENGL ES 的开发概述 .9 3.2.1 OpenGL ES 底层核心构件设计 .9 3.2.2 OpenGL ES API 统计分析 .10 3.2.3 OpenGL ES 底层构件的提取 .10 3.3 基于 OPENGL ES 技术的程序开发 .13 3.3.1 图形程序开发 .1
10、3 3.3.2 文字程序开发 .19 4 总结 .22 致 谢 . 错误 !未定义书签。 参考文献 .23 附录 应用程序源代码 .25 - 1 - 1 引言 随着 Windows Mobile 设备的迅速发展,文字图形开发也自然成为目前的一个热点。开发此技术需要用到 OpenGL ES 技术。 OpenGL 是由 SGL 公司于 1992年 7 月发布,是一款基于桌面操作系统、功能强大、调用方便的底层 3D 图形库。由于 目前 ,手机等移动设备的 迅速 提高,人们对局限于电话和短信等传统平台应用已经不再满足,而是越来越注重使移动设备的功能更加娱乐化、多样化,手机3D 游戏、导航系统等应用展现
11、了未来的发展方向。 Khronos 组织于 二零零三 年七 月发布了针对于嵌入式设备图形开发的标准 OpenGL ES。 OpenGL ES 是 OpenGL 的 精简 子集,针对 PDA、手机和游戏主机等嵌入式设备而设计。 1.1 研究背景 图像软件 经过 了一 个从无序到有序,从 专业化 到标准化的过程。早期的图像编程开发 并 没有通用的图像标准实现,基本由各个组织 本身 开发的图形函数实现对某一专用图形硬件的编程。这种方式开发的图形应用程序依赖于图形硬件和某一操作系统下实现的专用图形库,开发效率低 , 可移植性差。 一九九四 年由 SGI公司 组织 ,在 SGI 的图形库标准之上制定了
12、OpenGL 标准, 很多 图形软件系统和标准 均根据 OpenGL开发, 因此 OpenGL被 广为使用 并 且独立于图形硬件设备、窗 口 系统 和 操作系统, 很多 厂家已 把 OpenGL 集成到各种操作系统和窗口系统等 。目前 被国际 很多 知名的 公司认可并 使 用 , OpenGL 成为了 一种 工业图形标准。 在 Open GL 基础上建立的 OpenGL ES 继承了成熟稳定的优点,图形 的 标准是一个动态发展过程, OpenGL ES 不排除对其进行扩展,事实上它鼓励对其进行创造性的扩展。随着应用的深入和认识的提高, OpenGL ES 图形标准 必定 在广度和深度上将进一步
13、得到发展 1。 1.2 研究内容 OpenGL ES 简 单化 了模型 的 描述。例如: 使 用 OpenGL 绘制一个三角形。利用 OpenGL ES 绘制时 , 在 OpenGL ES 中取消了四边形、多边形等复杂图元非绝- 2 - 对必 须 的特性 ,这些复杂图元可以通过绘制多个三角形来间接绘制。另外 OpenGL ES 在纹理、 灯光 等 多 方面也进行了优化,对原有的 OpenGL 函数进行了删 改 ,并 添增 了一些更有 助 于嵌入式环境开发的函数 2。 本文 通过 Visual Studio 2008 进行软件开发 ,利用 C#托管代码 编程实现OpenGL ES 在 Windo
14、ws Mobile 设备上的一些基本的功能,包括文字的旋转和尺度变化和 3D 图形的绘制。 1.3 研究现状 目前,在嵌入式设备上(如手机)的 3D 游戏开发总是基于一 些 的图形 API来进行的, OpenGL ES 便 是其中性能 较为 卓越的一种 API,它被广泛地使用在 很多手机游戏中。 因为目前 手机硬件性能相对 低下 ,游戏总会 因为 一些软硬件的限制,影响游戏画面的效果和 展现力 。为了增强游戏的 展现力 ,有必要对图形绘制过程的优化进行 深入 研究。基于 WLAN 和 GPRS/CDMA 等各种无线通信技术的多媒体服务在飞速的发展,人们对随身设备的多媒体功能要求越来越迫切,但目
15、前移动设备的 3D 功能多项对较弱。现在的 3D 图形引擎不能满足多样化的移动平台和 3D 图形应用需求 3。 和桌面的 操作系统 的 3D 应用 相似 ,移动设备 需 要实现 3D 处理也必须透过标准的 API。在 Windows 的发展进程中,有两种的 API 存在,那 便 是 DirectX 和OpenGL。而移动设备自从推出以来,就一直 使 用 OpenGL API 的衍生标准,也就是 OpenGL ES。 OpenGL ES 继承了 很多 OpenGL 的特 点 , 具备了 易开发的优点,让 使用 者能够更 加 轻松的在 开发 平台上开发 程序 ,由于与 OpenGL 的 许 多开发
16、规则相 似 ,透过 OpenGL 开发的个人计算机游戏也能相对简易的 在 移动设备上使用 。 在传统的 个人计算机 上, 一般使 用 OpenGL 来 构建 三维图形 的 引擎,但 是由于在 嵌入式设备中不支持 OpenGL,所以这里采用 了 OpenGL 在嵌入式设备上的子集 OpenGL ES 来构建图形引擎。 OpenGL ES 是 专门 针对 3D手机 周边应用而开发的绘图 API,由 Khronos 公司 所 定制 。它在嵌入式设备中所扮演的和 OpenGL在 个人计算机 上扮演的一样 角色 ,提供底层的显示函数 以便 调用。 OpenGL ES也必须考虑到移动平台的一些问题,其中最
17、重要的 应该 是内存 的 应用和功耗 的 问- 3 - 题。为解决此问题必须使 API 尽量小地占用磁盘和内存的空间;从而使得数据总量的交换保持最小化,并保证功耗越小越好。 OpenGL 标准 不是 依赖于窗口系统的,这提供了 很好 的平 台无关性。手持及嵌入式市场的平台种类 多种多样 , 仅仅 是 了解 各家手机操作系统的接口就是 十分大的 工程 了,更 加 不用说总有一些有志于支持各种尺寸平台的软件 研发 者。所以,OpenGL ES 提供了 Window Surface 的抽象, 从而 使得移植工作可以基本 限制 在重新实现一下 构建 窗口的过程 4。 - 4 - 2 OpenGL ES
18、 技术的开发原理 2.1 OpenGL ES 的介绍 OpenGL ES 三维图形库 是由 OpenGL 三维图形库 简化而得 的子集,在OpenGL ARB 和 Khronos 两个官 方组织的 共同 合作下 构建 ,它 主要 是针对三维图形 的 应用,有 较为 完整功能的低层函数库,在 大多数 主要的嵌入式平台上都是可行的 。 OpenGL ES 作为 OpenGL 的 一个精简 子集,其 功能主要是 专门针对嵌入式平台。它 只 需要 使用大概 50KB 的内存, 它的 功能 与 OpenGL 非常 相近 。它与OpenGL 在 功能上最 为 明显的区别是没有 OpenGL 构建 模型技术
19、中的分组指令。在 OpenGL ES 的使用 中,程序员 仅仅需 要 对 一个模型的 颜色 、纹理、顶点、 法线 坐标定义数组。 另一项重要的区别是 GLUT 函数库和 GLU 函数库。 GLU 函数库 具有很多 便利的函数, 例如 生成基本模型 、 设立观景量、 定位照相机 和纹理的 MIP 映射。 OpenGL ES 和 OpenGL 有许多 不同 处 ,为了 能够 更好地匹配在嵌入式平台上有限的 计算机 硬件, 不仅 支持浮点数 ,同时 还支持定点数。其 十六 定点数的数据类型 包括 2 个整型数据类型,第 1 个 十六 位整型为整数部分, 第 2 个 十六 位整型为小数部分。 采用 定
20、点数数据类型的顶点定义的模型 和采用 浮点数数据类型的顶点定义的模型 相比,前者更加方便快捷 。 OpenGL ES 分为 三种简表,通用简表 不仅仅 支持浮点数 同时也支持 定点数,它 能够 针对游戏机和移动电话 等 这些 功能更加强 大 的设备。轻量级的通用简表 仅仅 支持定点数,它 更加 针对基本的设备。在那些以安全为关键点的嵌入式应用的情况下测试和认证是至关重要的 5。 OpenGL ES 使用点、线段或三角形这些图元来 构建 模型, OpenGL ES 没有四边形和 多 边形图元,这类图元 需 要用三角形来构造。 OpenGL ES 是一个迁移的 标准 ,它有三个 角色 。 Open
21、GL ES 2.0 是基于 OpenGL 2.0, OpenGL ES 1.1 是基于 OpenGL 1.5, OpenGL ES 1.0 是 基于 OpenGL 1.36。 OpenGL ES1.1 支持 mipmap 生成 、 多重纹理和在点渲染上提供更多的控制。OpenGL ES 2.0 是一个更 全面 的改变,它利用一个 凭借 渲染模型为基础的可编程着色器,只支持浮点运算。这种设计的动机是为移动设备将在短 时间 内具有与 目- 5 - 前 的台式 电脑 和笔记型电脑同样强大的渲染能力。 2.2 OpenGL ES 的优势 OpenGL ES 是一个从 OpenGL 精选 出来的低阶、低
22、容量的先进绘图用 API。它在研发 方面 有很多优势。 OpenGL ES 是产业标准和完全免费的。 所有 人都可以生产制作并贩售兼容于OpenGL ES 的 各种 产品。在 大部分的 产业 里, OpenGL ES 是 一种 开放、中立与跟平台 兼容 的绘图 标准协议 。具体而言, OpenGL ES 使研 发人员能够更 加 专注在产品 的 内容 上 , 从 而不需要 花费太多的精力 在 如何 适应各 种 平台上。 OpenGL ES 可以从软件渲染到硬件渲染进行 非常全面 的过渡。所定义的绘图标准能够在 任何 平台下使用,其中 包括了 纯硬件的绘图芯片、运用 处理器 功能的纯软件或是 CP
23、U 与硬件 的 混合平台。这 说明 软件 研发 者 目前 只要 通过 开发一个 3D 引擎后,就可以和 新 版本的标准达到 全面 兼容。 OpenGL ES 可以 在 小容量与低耗电量的硬件设备 上使用 。嵌入式的硬 件规格有非常 多 的不同,从 50MHz、 l MB RAM 的手机 到 400Mhz、 64MB RAM 的PDA 都有。 对于 这些不同的平台, OpenGL ES 只 要非常小的储存容量、最低的频宽 便 可同时适应整数与浮点 的 运算。 因而使用者 可以轻易的将它放入系统里。 OpenGL ES 有 全面 的文档支持。 因此 OpenGL ES 是基于 OpenGL 所 构
24、建 的,所以它有 许多 的教学 资料 与 很多 的程序 范例 可供 参照 ,这使得 OpenGL ES 可以很容易 地 被使用。根据 OpenGL ES 的优势 , 开发 人员己经可以为手机甚至大型计算机制作程序范例 7。 OpenGL ES 支持延伸和 将来的 发展。 OpenGL ES 充许 通过 各种延伸指令的使用。透过 API 中的延伸指令集,可以将硬件的特殊应用与 OpenGL ES 整合,或者 在特殊平台上使用厂商特制的功能。当这些功能广泛被使用后,将有可能成为 新 一代的标准 。 OpenGL ES 更加 易于使用。 凭借 OpenGL, OpenGL ES 具有直觉性运用与逻辑
25、性命令的架构。 - 6 - 2.3 OpenGL ES 库的结构化设计 OpenGL ES 编程接口是 OpenGL 图形结构面向嵌入式应用的精简子集,组成部分 主要分为 :与操 作系统 相 关的部分 , 与 window 窗口管理相关的部分 , 与图形加速驱动器相关的部分 , 与 LCD 显示驱动器相关的部分 以及 OpenGL ES 核心部分 。 由此得出结论 , OpenGL ES 库的 构建 必须 使 用结构化设计模式,其基本思路 就是使 OpenGL ES 系统 的 设计层次化,即把 OpenGL ES 系统 从 上而下 逐步 分解为 很多 个彼此独立而又有一定 关联 的组成部分,这
26、些组成部分 称作 层次模块,由抽象到具体,逐层将 OpenGL ES 系统分解为一个多层 面 的、具有相对独立功能的模块组成的系统 8。 2.3.1 模块化结构设计 该结构的设计思 路是利用 面向对象的设计方法对 OpenGL ES API 进行分类,重用现有的 OpenGL ES 库,取代其中与目标类相关的 API 函数,如图 2-1所示。其中, OpenGL ES API 大概 可以分为与 顶点、片元 相关的 API 接口 , 与颜色、 光 照、纹理相关的 API 接口 和 与 着色 相关的 API 接口 。 因此 可以得出结论 ,结构设计的主要思 路 就是先 一步一步地 实现与目标相关的类,然后 再 用定制的类接口取代 OpenGL ES API 库中的对应类 的 编程接口 9。