【发布时间】:2017-08-05 12:32:15
【问题描述】:
SceneKit 每秒调用其渲染代理 60 次,以允许主机应用程序调整包含场景中的参数以提供动画、物理等。
我的场景很大(360,000 个顶点)。几乎所有 (~95%) 场景每分钟(每 3,600 个委托调用)都会稍微旋转一次。场景的一小部分(大约 300 个节点 ~ 15,000 个顶点)每秒移动一次(每 60 个委托调用);在应用程序“启动”(viewDidLoad)之前创建所有节点并设置它们的属性,然后在委托调用中仅更改它们的位置,如上所述。
根据 Xcode,我的帧刷新率仅保持在 60 fps,CPU 使用率约为 30%。所有这些努力都花费在渲染循环中(没有交互;没有其他工作)所以我有两个问题:
1) 考虑到我的应用程序的一般描述,30% 的 CPU 似乎合理吗?更具体地说,由于我的委托代码看起来很简单,并且从
2) 如果是这样,是否有任何 SceneKit 技巧来夺回一些 CPU?例如,是否可以减慢代理调用率?
这是在 2.8GHz/i7 2015 MacBook Pro 上使用 macOS 10.12.3 和 Xcode 8 (Swift 3)
【问题讨论】: