2.1 、使用OpenGL ES绘制一个Core Animation层

第1章介绍了OpenGLES的帧缓存。iOs操作系统不会让应用直接向前帧缓存或者后帧缓存绘图,也不会让应用直接控制前帧缓存和后帧缓存之间的切换。操作系统为自己保留了这些操作,以便它可以随时使用CoreAnimation合成器来控制显示的最终外观。

Core Animation包含层的概念。同一时刻可以有任意数量的层。Core Animation合成器会联合这些层并在后帧缓存中产生最终的像素颜色,然后切换缓存。图2-1显示的是合并两个层来产生后帧缓存中的颜色数据的过程。

图 2-1

一个应用提供的层与操作系统提供的层混合起来可以产生最终的显示外观。例如,在图2-1中,OpenGLES层显示了一个应用生成的旋转的立方体,但是在显示器顶部的显示状态栏的层是由操作系统生成和控制的。大部分的应用使用多个层。

每一个iOS原生用户界面对象都有一个对应的CoreAnimation层,因此-一个显示多个按钮、文本域、图像等的应用会自动使用多个层。层会保存所有绘制操作的结果。例如,iOs为有效地在层.上绘制视频提供了软件对象。有用类似淡人淡出的特殊效果显示图像的层。层内容可以使用苹果的用于2D的支 持富文本的Core Graphics框架来绘制。类似本章中的例子,应用会使用OpenGL ES来渲染层内容。


注意

苹果的CoreAnimation合成器使用OpenGLES来尽可能高效地控制GPU、混合层和切换帧缓存。图形程序员经常使用术语混合(composite) 来描述混合图像以形成一-个合成结果的过程。所有显示的图画都是通过Core Animation合成器来 完成的,因此最终都涉及OpenGL ES。


帧缓存会保存OpenGL ES的渲染结果,因此为了渲染到一个Core Animation层上,程序需要一个连接到某个层的帧缓存。简言之,每个程序用足够的内存配置-一个层来保存像素颜色数据,之后创建-一个使用层的内存来保存渲染的图像的帧缓存。图2-2介绍了OpenGL ES的帧缓存与层之间的关系。

图 2-2

图2-2显示了一个像素颜色渲染缓存( pixel color render buffer)和另外两个标识为其他渲染缓存(other render buffer)的缓存。除了像素颜色数据,OpenGL ES和GPU有时会以渲染的副产品的形式产生--些有用的数据。帧缓存可以配置多个叫做渲染缓存的缓存来接收多种类型的输出。与层分享数据的帧缓存必须要有一个像素颜色渲染缓存。其他的渲染缓存是可选的,但是本章中不会使用。图2-2为完整起见显示了其他的渲染缓存,因为大部分不平凡OpenGLES程序会使用至少-一个额外的渲染缓存,具体内容会在第5章中解释。

results matching ""

    No results matching ""