我目前正在测试将SceneKit用于我想制作的游戏的可行性,但是在确定如何最好地在SceneKit中创建许多类似几何对象的网格同时保持可接受的性能时也是如此。这就是我想做的事情:
我从25个立方体的网格开始,25个立方体。通过使用单个SCNBox对象为几何体构建循环网格并设置shaderModifiers
属性的firstMaterial
属性,我获得了良好的性能。我将所有625个多维数据集添加到一个节点,然后将此节点的flattenedClone()
添加到我的场景的根节点。这意味着只需1次绘制调用即可渲染整个场景。
然而,重用几何体的问题是所有立方体必须使用相同的着色器。但是如果我为每个立方体创建一个新的SCNBox(这样我就可以为每个立方体单独设置着色器),那么我最终会为每个立方体进行绘制调用,这样效率很低,当越来越多的立方体时性能会受到影响被添加到场景中。如果几何体比立方体更复杂,性能会严重下降。
当然,我可以优化并使用任何使用相同着色器共享相同几何体的立方体,将它们添加到自己的节点并将该节点的flattenedClone()
添加到场景中。但在这种情况下,我能做些什么来优化?或者我最好完全寻找SceneKit的替代品?