我发现一个图表显示了在OpenGL上实现的核心图形,另一个图表将其与OpenGL放在一起。我认为苹果让每个人都能平等使用图形硬件是明智的,但话又说回来,我对他们使用的图形芯片了解不多……也许它一直都是3D的?
这里有人知道细节吗?
发布于 2011-09-27 02:57:45
是的,iOS核心图形(石英)似乎位于OpenGL ES之上,用于绘制针对屏幕的图形,尽管不是以我们可以访问的明确方式。
核心图形采用矢量元素(直线、圆弧等)以及一些光栅图像(图像),并对其进行处理以显示到屏幕上或用于其他形式的输出(PDF文件、打印等)。如果目标是iOS上的屏幕,那么这些矢量元素将直接或通过CALayer的支持层托管在UIView中。
这些核心动画层是图形处理器上矩形纹理的有效包装器,这就是核心动画如何在原始iPhone硬件上提供层的平滑平移、缩放和旋转。我现在找不到它的参考资料,但至少有一个WWDC演示文稿指出,核心动画使用OpenGL ES与图形处理器进行通信,以执行此硬件加速。类似的事情可以在新的双图形处理器MacBook Pro上观察到,当使用核心动画与应用程序交互时,功能更强大的图形处理器开始发挥作用。
因为核心图形在绘制到屏幕时将矢量和栅格元素栅格到CALayer中,并且CALayer有效地环绕OpenGL ES纹理,所以我会将OpenGL ES放在iOS的核心图形下面,但仅在核心图形呈现到屏幕的情况下。在你看到的层次结构中并排放置的原因可能是由于三个因素:在Mac上,并不是所有的视图都是层支持的,所以它们可能不是以相同的方式进行硬件加速的;我们不能真正与标准UI元素的OpenGL ES支持交互,所以从开发人员的角度来看,它们是截然不同的概念;核心图形可以用来渲染到屏幕外的上下文,比如PDF文件或图像。
发布于 2011-09-27 02:03:43
Core Graphics和OpenGL是两个完全独立的系统。请看下面的(source)图像,其中显示了两者在同一级别列出。在同一页下面的Core Graphics的描述也表明它是最底层的原生绘图系统。

另请参阅About OpenGL ES页面。它显示了OpenGL代码直接在图形处理器上运行,如果你向下滚动,你会发现有一些事情是使用OpenGL的应用程序无法完成的。显然,如果CG是基于OpenGL的,你将永远不能做这些事情。
最后,看看iOS的Drawing Model页面。在顶部,它将OpenGL与本机绘图进行比较,表明它们彼此独立工作。
发布于 2013-12-18 05:50:09
核心图形和OpenGL是两种不同的技术。UIKit和AppKit都构建在这两者之上,以及核心动画。您可以在苹果的文档(Core Animation Programming Guide)中看到图形技术堆栈
https://stackoverflow.com/questions/7558636
复制相似问题