使用NSBezierPath快速绘制至少4000个段

时间:2010-12-02 04:58:54

标签: objective-c cocoa image image-processing drawing

我试图在NSView的每个drawRect上使用NSBezierPath绘制大约4000-10000个段(大约300x300像素的盒子)。这是非常耗费资源的,并且需要花费很多时间来绘制(相对较长)。

有人可以建议替代吗?我曾尝试一次使用一个NSBezierPath 1000个段,但它仍然太耗资源。

我正在寻找任何可能的选择。我确信OpenGL会更快,但我不知道我是否必须学习一个新的平台才能做我需要的东西。我愿意接受建议。

1 个答案:

答案 0 :(得分:4)

不是答案,只是测试结果

我用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:目的是为我们的心态设定时间基线。