使用SceneKit创建类似对象的大型网格

时间:2015-09-02 07:30:34

标签: ios opengl scenekit

我目前正在测试将SceneKit用于我想制作的游戏的可行性,但是在确定如何最好地在SceneKit中创建许多类似几何对象的网格同时保持可接受的性能时也是如此。这就是我想做的事情:

  1. 在网格中放置数百个几何图元,现在只是一个普通的立方体。
  2. 将各种顶点和/或曲面和/或片段着色器应用于每个立方体。一些立方体可能会应用相同的着色器,但实际上我希望至少有几十种不同的着色器可以应用于立方体。
  3. 我希望能够将相机缩小并同时查看所有立方体,同时保持平滑的帧速率。
  4. 我从25个立方体的网格开始,25个立方体。通过使用单个SCNBox对象为几何体构建循环网格并设置shaderModifiers属性的firstMaterial属性,我获得了良好的性能。我将所有625个多维数据集添加到一个节点,然后将此节点的flattenedClone()添加到我的场景的根节点。这意味着只需1次绘制调用即可渲染整个场景。

    然而,重用几何体的问题是所有立方体必须使用相同的着色器。但是如果我为每个立方体创建一个新的SCNBox(这样我就可以为每个立方体单独设置着色器),那么我最终会为每个立方体进行绘制调用,这样效率很低,当越来越多的立方体时性能会受到影响被添加到场景中。如果几何体比立方体更复杂,性能会严重下降。

    当然,我可以优化并使用任何使用相同着色器共享相同几何体的立方体,将它们添加到自己的节点并将该节点的flattenedClone()添加到场景中。但在这种情况下,我能做些什么来优化?或者我最好完全寻找SceneKit的替代品?

0 个答案:

没有答案