SceneKit - 向场景添加新的SCNNode会导致严重延迟

时间:2015-04-07 12:21:47

标签: ios objective-c xcode performance scenekit

我发现将SCNNodes(带有SCNGeometry)添加到场景会导致严重的滞后峰值。

根据Time Profiler,它必须生成几何体(至少函数/方法被调用)。它在将节点添加到场景时执行此操作,而不是在创建节点时执行此操作。因此,使用SCNNode创建池将不起作用。

有没有办法摆脱这种滞后?我希望能够在没有任何FPS掉落的情况下将节点添加到场景中。

我到目前为止唯一的想法是将所有内容添加到场景中然后隐藏/取消隐藏它,尽管这不是一个干净的解决方案。

这是Time Profiler的一个镜头:

enter image description here

1 个答案:

答案 0 :(得分:6)

看起来你正在添加一个附加了SCNShapeSCNText的节点,这些几何形状的创建成本很高(你必须对Bézier曲线进行离散化和三角测量,最终必须倒角的计算和偏移曲线。)

您可以尝试从SCNSceneRenderer预加载以下方法:-prepareObject:shouldAbortBlock:-prepareObjects:withCompletionHandler: