小编Chr*_*isL的帖子

当新节点可见时,SceneKit 应用程序卡顿

我有一个 SceneKit 应用程序(使用 Metal)在屏幕上出现新节点时口吃的问题,即使该应用程序在 60 fps 之前和之后顺利运行。

想象一个游戏,其中的东西被摧毁,有时在某些东西被摧毁的地方会出现通电。我很确定口吃与出现的能量提升有关,因为当事物刚刚被破坏(因此从场景中移除)时它不会发生。

到目前为止我所做的尝试修复口吃:我通过 SceneKit 视图的 preload 方法预加载节点,并仅在其完成处理程序中将它们添加到场景中。我早在需要显示它们之前就将它们添加到相机上方,并且在需要时将它们移动到正确的位置。我已经实施了一种排队机制,以确保每帧仅进行一次更改(移除被破坏物品的节点,将通电移至其位置)。

但是有时(并非总是)在出现通电时仍然会出现口吃。我想知道 SceneKit 是否仅在节点第一次出现时才执行某些操作(即使它们已被预加载)。无论发生什么似乎都足以导致口吃,但对于 XCode 性能计来说太短了,无法显示它。每帧都有大量空闲时间,CPU 和 GPU 甚至从未接近最大化。

我不认为这个问题与复杂的几何图形或巨大的纹理有关,因为当我使用具有统一颜色的简单立方体时,它仍然会发生。

知道这里发生了什么或者我如何追踪它吗?

xcode scenekit metal swift3

5
推荐指数
1
解决办法
452
查看次数

标签 统计

metal ×1

scenekit ×1

swift3 ×1

xcode ×1