SCNNode.flattenClone() не уменьшает вызовы отрисовки

Я пытаюсь оптимизировать свое приложение SceneKit, уменьшив количество вызовов отрисовки. Исходя из документации Apple и многих обсуждений WWDC, объединение множества дочерних узлов в один узел с помощью flatlinedClone() должно уменьшить количество вызовов отрисовки, но я не могу уменьшить количество вызовов отрисовки, используя этот метод.

Я приложил простой пример приложения SceneKit, которое демонстрирует, как flatlinedClone не уменьшает вызовы отрисовки.

Когда приложение запускается, 5 объектов отображаются, и вы можете увидеть 5 вызовов. (ну 6 на самом деле, если вы взаимодействуете с камерой).

Затем, если вы нажмете кнопку переключения, 5 узлов будут сведены в один узел. Это все еще приводит к 5 розыгрышам!

Похоже, что это полностью противоречит разным видам документации и разговорам о flatlinedClone. Есть идеи о том, что происходит?

Вы можете запустить простое приложение здесь, в симуляторе или на устройстве iOS: https://drive.google.com/open?id=1ZJQZAnHtOCeK_3WzbdD0vLLJ2kWTKao- Обратите внимание, что вам нужно повернуть камеру, чтобы получить обновленную статистику вызовов на ничью.

let nodes = SCNScene.init(named: 
"nodes.scn")!.rootNode.childNode(withName: "parentNode", recursively: true)!;

//Unflattened version:
scene.rootNode.addChildNode(nodes)

//Flattened version:
let flattenedNode = nodes.flattenedClone()
scene.rootNode.addChildNode(flattenedNode)

Скриншот

скриншот приложения

1 ответ

ОК, я решил это. Джеймс П был прав. Все 5 объектов были использованы разные материалы.

Если вы используете один и тот же материал для всех объектов, а затем сплющены в один узел, количество вызовов отрисовки уменьшается с 6 до 2. Вы можете запустить это самостоятельно, чтобы увидеть: https://drive.google.com/open?id=1En3tZ9QFTZPd2-xJwCA-0CMO3QWX8UZt

Я подал ошибку в Apple, и они подтвердили, что причина, по которой количество розыгрышей не сокращается, заключается в 5 отдельных материалах. Итак, в заключение: SceneKit ведет себя так, как ожидалось.

Другие вопросы по тегам