SceneKit - 向场景添加新的 SCNNode 会导致严重滞后
SceneKit - Adding a new SCNNode to the scene causes severe lag
我发现向场景中添加 SCNNode(使用 SCNGeometry)会导致严重的滞后峰值。
根据 Time Profiler,它必须生成几何图形(至少 functions/methods 是这样调用的)。它在将节点添加到场景时执行此操作,而不是在创建节点时执行此操作。因此,使用 SCNNodes 创建池将不起作用。
有没有办法消除这种延迟?我希望能够在不降低 FPS 的情况下向场景添加节点。
到目前为止我唯一的想法是已经将所有内容添加到场景中然后隐藏/取消隐藏它,尽管这并不是一个真正干净的解决方案。
这是 Time Profiler 的截图:
看起来您正在添加一个附有 SCNShape
或 SCNText
的节点,并且创建此类几何图形的成本很高(您必须对贝塞尔曲线进行离散化和三角剖分,最终必须计算和偏移倒角的曲线)。
您可以尝试从 SCNSceneRenderer
中预加载以下方法:-prepareObject:shouldAbortBlock:
、-prepareObjects:withCompletionHandler:
我发现向场景中添加 SCNNode(使用 SCNGeometry)会导致严重的滞后峰值。
根据 Time Profiler,它必须生成几何图形(至少 functions/methods 是这样调用的)。它在将节点添加到场景时执行此操作,而不是在创建节点时执行此操作。因此,使用 SCNNodes 创建池将不起作用。
有没有办法消除这种延迟?我希望能够在不降低 FPS 的情况下向场景添加节点。
到目前为止我唯一的想法是已经将所有内容添加到场景中然后隐藏/取消隐藏它,尽管这并不是一个真正干净的解决方案。
这是 Time Profiler 的截图:
看起来您正在添加一个附有 SCNShape
或 SCNText
的节点,并且创建此类几何图形的成本很高(您必须对贝塞尔曲线进行离散化和三角剖分,最终必须计算和偏移倒角的曲线)。
您可以尝试从 SCNSceneRenderer
中预加载以下方法:-prepareObject:shouldAbortBlock:
、-prepareObjects:withCompletionHandler: