objective-c - 使用 NSBezierPath 快速绘制至少 4000 个线段

标签 objective-c cocoa image image-processing drawing

我正在尝试在 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

结果:

alt text

PS:目的是为我们的心态设定一个时间基准。

关于objective-c - 使用 NSBezierPath 快速绘制至少 4000 个线段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4331835/

相关文章:

ios - iPhone 6 的 UINavigationBar 背景图像

ios - IAP 恢复托管内容

objective-c - 如果我正在进行手动内存管理,应使用哪个 Json 库

javascript - 不知道如何使用预加载的图像制作脚本

image - MATLAB 中的直方图均衡帮助

objective-c - 是否可以在 PC 上编译 Objective-C 代码?

swift - 你如何显示 NSStatusBar 项目并隐藏停靠栏图标?

objective-c - NSTable 和 NSMutableArray 排序

ios - 不使用 center 属性移动 UIImageView

python - 在 Python 中打开 JPEG 图像