gpt4 book ai didi

ios - 在 iOS 中使用图层和部分渲染来提高速度的最佳方法是什么

转载 作者:行者123 更新时间:2023-11-29 03:50:27 24 4
gpt4 key购买 nike

我正在开发一个使用 Core Graphics 编写的图形应用程序。我有一个累积数据的缓冲区,并将其呈现在屏幕上。它非常慢,如果可能的话我想避免使用 openGL。根据探查器,绘制我的图形数据是让我丧命的原因(它由许多点组成,这些点被转换为路径,然后调用 AddPath、DrawPath)..

这就是我想做的,我的问题是如何使用图层/ View /等最好地实现它。

我有一个网格和一些文本。我希望它在 CALayer (或其他一些层/ View ?)中呈现,并且仅在需要时更新(图形被重新缩放)。

仅需要刷新部分数据。我想获取以前的屏幕缓冲区,删除矩形的数据(或用白框覆盖它),然后仅绘制已更改的图形部分。

然后我想将背景层与前景图合并以生成合成图像。这就要求图形层有透明的背景,以免遮挡网格。

我考虑过使用 CAlayer 作为子层,但它似乎没有提供一种简单的画线方法。 CAShapeLayer 看起来好一点,但是看起来只能画一条线。我希望网格由多条线组成。

允许我执行此操作的最佳方法和对象组合是什么?

谢谢,礼萨

最佳答案

我有一个CGLayerRef用于绘制路径。对于每个新点,我只绘制新线段。当图表达到全宽时,我会创建一个新的 CGLayerRef并开始在其中绘制新的线段。

前一层被新层覆盖时会发生什么取决于图形的显示方式,但您可以清除现在位于新层下方的部分(使用 CGContextSetBlendMode(context, kCGBlendModeClear); ),或者您可以选择混合他们以其他方式结合在一起。

与绘制所有线段本身相比,每次更改图层包含的线条时绘制图层的成本相对较低。

从技术上讲,还会有 CALayer用于管理 CGLayerRef 的绘图到屏幕(通过委托(delegate)关系 drawLayer:inContext: ),但所有线条绘制都是使用 CGLayerRef 完成的s 上下文,然后是 CGLayerRef被整体绘制成CALayer s 上下文 ( CGContextDrawLayerInRect(context, frame, backingCGLayer); )。

关于ios - 在 iOS 中使用图层和部分渲染来提高速度的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17139915/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com