我正在尝试在 NSView 的每个绘制矩形(大约 300x300 像素框)上使用 NSBezierPath 绘制大约 4000-10000 个段。这非常耗费资源,并且需要花费很多时间来绘制(相对较长)。
有人可以建议一个替代品吗?我尝试过一次使用单个 NSBezierPath 处理 1000 个段,但它仍然占用大量资源。
我正在寻找任何可能的替代方案。我确信 OpenGL 会更快,但我不知道是否必须学习新平台才能完成我需要的操作。我愿意接受建议。
最佳答案
不是答案,只是测试结果
我用 Mathematica 做了一个简单的实验。这个实验为我们提供了您时间的绝对上限,因为我没有使用任何优化、没有 GPU、解释语言等。所以我认为可以实现的不仅仅是一个数量级。
结果:
生成 10.000 条贝塞尔曲线列表
b = Table[
{Hue[RandomReal[]],
BezierCurve@RandomReal[{0, 300}, {4, 2}]}, {10000}];
非常快,因为 mathematica 不评估任何内容。
现在渲染:
h1 = AbsoluteTime[]; Print@Graphics[b]; h2 = AbsoluteTime[]; Print[h2 - h1];
Time spent 11.8 secs
结果:
PS:目的是为我们的心态设定一个时间基准。
关于objective-c - 使用 NSBezierPath 快速绘制至少 4000 个线段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4331835/