gpt4 book ai didi

ios - 是否有快速绘制二维数组的推荐方法?

转载 作者:行者123 更新时间:2023-12-01 21:56:44 27 4
gpt4 key购买 nike

我想在 iOS 上快速绘制一个二维数组。二维数组就像 heat map , depth mapsegmentation map , ETC。
就我而言,使用 UIKit框架,绘制大尺寸数组,如500x500形状,太慢了。

// my solution, but it's too slow
override func draw(_ rect: CGRect) {

guard let ctx = UIGraphicsGetCurrentContext(),
let heatmap = self.heatmap else { return }

ctx.clear(rect);

let size = self.bounds.size
let heatmap_w = heatmap.count
let heatmap_h = heatmap.first?.count ?? 0
let w = size.width / CGFloat(heatmap_w)
let h = size.height / CGFloat(heatmap_h)

for j in 0..<heatmap_w {
for i in 0..<heatmap_h {
let value = heatmap[i][j]
let alpha: CGFloat = CGFloat(value)
guard alpha > 0 else { continue; }

let rect: CGRect = CGRect(x: CGFloat(i) * w, y: CGFloat(j) * h, width: w, height: h)

let color: UIColor = UIColor(red: 1.0, green: 0.0, blue: 0.0, alpha: alpha*0.58)

let bpath: UIBezierPath = UIBezierPath(rect: rect)

color.set()
bpath.stroke()
bpath.fill()
}
}

} // end of draw(rect:)
我认为 MetalCoreGraphics框架与这个问题有关,但我找不到合适的例子或 Material 。有什么推荐的方法吗?
热图示例
depthmap example
更新:
Here是 MetalKit 的分段后处理实现示例。后处理延迟降至 1 ms来自 240 ms在 iPhone 11 专业版上。
我提到了 MetalCamera很多。
segmentation-demo
新更新:
Here是使用 MetalKit 和 Accelerate 框架的深度预测后处理实现示例。后处理延迟降至 1 ms来自 15 ms在 iPhone 11 专业版上。
depthmap-demo

最佳答案

最好的方法是使用 Metal 计算函数 以达到最佳性能。
苹果有好tutorial这显示了基础知识。此外,您可以使用 Metal Performance Shaders实现自定义渲染功能或利用现有功能的大型库。

关于ios - 是否有快速绘制二维数组的推荐方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61154192/

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