0

假设我想在 UIView 中显示一个坐标图,该坐标图将及时更新。假设我正在实现-drawrectUIView 和其他方法来更新图形。

由于图表中的坐标框架随着时间的推移保持不变,拥有两个 UIView 是否更有效,其中一个(view1)从图像文件加载坐标框架作为其视图,因此无需每次都绘制框架图形更新和另一个(view2)已经-drawrect实现并作为view1的子视图添加,而不是只有一个UIView可以绘制整个图形-drawrect

以上只是一个具体的例子。我想知道的是,将静态 UI 元素尽可能多地与动态元素分离是否是一种设计模式,-drawrect并且这样做是否可以大大节省 CPU(或 GPU)资源。

任何见解将不胜感激。谢谢。

4

1 回答 1

0

我的经验是,通常最好有一个离屏缓冲区,然后将部分或全部离屏缓冲区复制到屏幕上。有多种方法可以做到这一点,这取决于您使用的视图类型。例如,如果您有一个NSOpenGLView,您可能会绘制到一个纹理支持的 FBO,然后使用该纹理将一个纹理四边形绘制到屏幕上。如果您正在为静态部分使用 CGImages,您可能会绘制到主内存中的 CGBitmapContext,然后将该位图上下文转换为 CGImage 以绘制到视图。

您如何绘制到屏幕外缓冲区也取决于您正在绘制的内容。对于图形之类的东西,您可以将背景绘制一次到屏幕外缓冲区,然后随着时间的推移将点添加到您正在绘制的曲线上,然后复制您需要筛选的部分。对于场景中所有角色和对象都在移动的游戏,您可能需要在每一帧上绘制场景中的所有内容。

于 2013-07-19T05:27:07.933 回答