我发现一个图表显示了在OpenGL上执行的Core Graphics,另一个将它放在OpenGL旁边.我会认为,苹果会聪明地给每个图形硬件的平等访问,但是再次,我不太了解他们正在使用的图形芯片…也许是3D一直吗?
这里有人知道具体细节吗?
解决方法
是的,在iOS Core Graphics(Quartz)上似乎是分层在OpenGL ES上,用于绘制目标屏幕,虽然不是以我们有权限的显式方式.
核心图形采用矢量元素(线,弧等)和一些栅格(图像),并处理它们以显示到屏幕或其他形式的输出(PDF文件,打印等).如果目标是iOS上的屏幕,则这些向量元素将直接或通过UIView的后盾层托管在CALayer中.
这些核心动画图层在GPU上的矩形纹理上实际包装,Core Core可以在原始iPhone硬件上提供平滑的翻译,缩放和旋转.我现在找不到参考,但至少有一个WWDC演示文稿指出,Core Animation可以使用OpenGL ES与GPU进行通信,以执行此硬件加速.在新的双GPU MacBook Pro上可以观察到类似的东西,当使用Core Animation与应用程序进行交互时,功能更强大的GPU踢.
因为Core Graphics在绘制到屏幕时将矢量和光栅元素光栅化为CALayer,而CALayer可以有效地包围OpenGL ES纹理,所以我将把OpenGL ES放在iOS上的Core Graphics之下,但只能在Core Graphics渲染的情况下到屏幕.您所看到的层次结构中并列放置的原因可能是由于三个因素:在Mac上,并不是所有视图都是层次支持的,因此它们可能不会以同样的方式加速硬件;我们不能真正与OpenGL ES支持标准UI元素进行交互,所以从开发者的角度来看,它们是截然不同的概念;和Core Graphics可以用于渲染到屏幕上方,如PDF文件或图像.