Для истинного просветления нужно внимательно прочитать документацию, затем все закомментировать и восстанавливать функциональность по одному шагу за раз.А затем прочитайте документацию снова.
В разделе обсуждения - [SCNSceneRendererDelegate рендерер: willRenderScene: atTime:] , решение очевидно (выделено мной):
Вы должны выполнить толькоКоманды рисования металла или OpenGL (и любая настройка, необходимая для их выполнения) в этом методе - результаты изменения объектов SceneKit во время этого метода не определены .
Это именно то, что яделал.Я неверно истолковал это как изменение геометрии, поэтому подумал, что здесь целесообразно назначить текстуры (в конце концов, «будет» отображать означает, что он еще не начал рендеринг, верно?), И поэтому выбрал самую последнюю созданную текстуру.И, к сожалению, прежде чем я решил, что мне нужно наложение, это на самом деле работает отлично!Как только наложение было добавлено, однако, разрыв появился.
Правильное место для обновления свойств материала: - [SCNSceneRendererDelegate renderer: updateAtTime] .Используйте это, чтобы избежать глупых ошибок, как этот, ребята!