- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《《iPhone开发基础教程(电子版下载)》.pdf
12.1 图形世界的两个视图 285
1
第 12 章 2
使用Quartz 和OpenGL 绘图 3
4
5
到目前为止,本书中的所有应用程序都是通过UIKit框架中的视图和控件来构造的。借助
这些常备组件,我们可以执行许多操作,并且可以构造各式各样的应用程序界面。但 6
是,如果不能高瞻远瞩,某些应用程序会无法完全实现。例如,有时应用程序需要能够进行自定
义绘图。幸而,我们可以依靠两个不同的库来满足我们的绘图需要。一个库是Quartz 2D ,它是 7
Core Graphics框架的一部分;另一个库是OpenGL ES,它是跨平台的图形库。OpenGL ES是跨平
台图形库OpenGL 的简化版。OpenGL ES是OpenGL的一个子集,OpenGL ES是专门为iPhone之类 8
的嵌入式系统(因此缩写为字母“ES ”)设计的。本章将介绍这两个功能强大的图形环境。我们
将在这两种环境中构建示例应用程序,并尝试了解什么时候使用哪个环境。
9
12.1 图形世界的两个视图
10
尽管Quartz和OpenGL有许多共性,但它们之间存在明显差别。Quartz是一组函数、数据类型
以及对象,专门设计用于直接在内存中对视图或图像进行绘制。
11
Quartz将正在绘制的视图或图像视为一个虚拟的画布,并遵循所谓的绘画者模型。这只是一
种奇特的方式,之所以这么说,是因为应用绘图命令的方式很大程度上与将颜料应用于画布的方
12
式相同。如果绘画者将整个画布涂为红色,然后将画布的下半部分涂为蓝色,那么画布将变为一
半红色、一半蓝色或紫色。如果颜料是不透明的,应该为蓝色,如果颜料是半透明的,应该为紫
13
色。
Quartz 的虚拟画布采用相同的工作方式。如果将整个视图涂为红色,然后将视图下半部分涂
14
为蓝色,你将拥有一个一半红色、一半蓝色或紫色的视图,这取决于第二个绘图操作是完全不透
明的还是部分透明的。每个绘图操作都将被应用于画布,并且处于之前所有绘图操作之上。
另一方面,OpenGL ES 以状态机的形式实现。这个概念可能有点不好理解,因为不能将其归 15
结为一个简单的比喻,如在虚拟画布上绘画。OpenGL ES不允许执行直接影响视图、窗口或图像
的操作,它维护一个虚拟的三维世界。当向这个世界中添加对象时,OpenGL会跟踪所有对象的 16
状态。虽然OpenGL ES没有提供虚拟画布,但是却提供了一个进入其世界的虚拟窗口。可以向该
世界中添加对象并定义虚拟窗口相对于该世界的位置。然后,OpenGL根据配置方式以及各种对 17
文档评论(0)