【发布时间】:2014-06-10 19:51:26
【问题描述】:
我不是 iOS 图形 API 及其文档的忠实拥护者,并且已经尝试了一段时间来形成 高级视图 和渲染过程的结构,但只有零碎的信息.本质上,我试图理解(再次,高水平);
1) Coregraphics 和 CoreAnimation API 在从 CGContext 到前端帧缓冲区的渲染管道中的作用。
2) 在此过程中(这是文档中最令人困惑和最不详细的),哪些任务由 CPU 和 GPU 执行。
随着 Swift 和 Metal 的推出,我希望 API 能够被重新审视。
【问题讨论】:
-
当您覆盖
drawRect:时,它不会切换到软件渲染。您在实现中调用的所有绘图函数仍然使用您的图形硬件。但是,在某些类的设计中,一个方法并没有在基类中实现(我假设drawRect没有在UIView中实现)。当您的视图被绘制时,库代码可以检查您的类是否实现了该方法,如果没有,它可以跳过该步骤。这是一种技术含量低的优化。 -
我一直不确定这部分,并假设基础视图对象(视图、控件等)不使用 drawRect 绘制自己,而是隐藏了一些优化。这些都是我能找到的;
-
“系统视图通常实现私有绘图方法来呈现它们的内容。” developer.apple.com/library/ios/documentation/windowsviews/… 所以我认为当它们绘制自己时必须有一些隐藏的优化,而不是覆盖强制软件绘制的 drawRect。跨度>
标签: ios opengl-es core-graphics core-animation gpu