我试图在NSView的每个drawRect上使用NSBezierPath绘制大约4000-10000个段(大约300x300像素的盒子)。这是非常耗费资源的,并且需要花费很多时间来绘制(相对较长)。
有人可以建议替代吗?我曾尝试一次使用一个NSBezierPath 1000个段,但它仍然太耗资源。
我正在寻找任何可能的选择。我确信OpenGL会更快,但我不知道我是否必须学习一个新的平台才能做我需要的东西。我愿意接受建议。
答案 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
结果:
PS:目的是为我们的心态设定时间基线。