你听到很多关于OpenGL直接使用图形处理器的优点,这就是使用这种技术而不是UIKit的主要优势。但是,如果用这种方式做得好得多,为什么UIKit也不这样做呢?
答案 0 :(得分:6)
UIKit构建于基于OpenGL的CoreAnimation之上。有没有想过谁会为你做所有缩放和alpha混合?它是GPU,通过OpenGL纹理包含您的视图的渲染图像。
顺便说一句,我认为这是Apple的伟大技术成就之一。想想体验是多么顺畅(对于开发人员和用户而言)以及您需要做多少工作才能实现远程相似的工作。
答案 1 :(得分:1)
我在找到备份我的断言的文档时遇到了问题,但我相信堆栈是这样的:
UIKit - >核心图形 - > Quartz2D - > OpenGL的
因此,UIKit实际上正在利用OpenGL来加速UI小部件。
答案 2 :(得分:1)
为史蒂文写的内容添加更多评论:
OS X和iOS上的每张图最终都是由Open GL完成的。但是有一些方法可以画出一条线:
一种是通过CPU将一条线渲染成栅格化图像,然后将生成的栅格化图像发送到GPU以显示它。
另一种方法是将绘图命令发送到GPU,以便GPU将其绘制为光栅化图像。
然后,混合,动画等处理GPU中生成的光栅化图像。
如果您手动使用Open GL,那么您通常会这样做。我不确定像UIBezierPath
这样的UIKit绘图采用哪种方式,但OS X对应的AppKit使用方法1,除非你选择加入,这称为Quartz GL(在过去被称为Quartz 2d extreme) ):
但由于各种技术原因,Quartz GL默认情况下没有打开,详见John Siracusa撰写的(总是很棒的)Ars Technica文章。请参阅讨论here for 10.4和another for 10.5。
以下是关于Quartz GL的一份官方文档。