Загрузка SKShapeNode с пользовательским fillShader приводит к зависанию программы - PullRequest
1 голос
/ 20 марта 2019

Я пытаюсь загрузить SKShapeNode с помощью пользовательского fillShader, который начинает анимацию, когда я щелкаю мышью.Когда я это делаю, программа начинает зависать примерно на секунду или около того.Почему это?Что-то не так с этим кодом?

Где мой шейдер сделан:

func shaderSprite(position: CGPoint) -> SKShapeNode {
        let sprite = SKShapeNode(rectOf: CGSize(width: 1000, height: 1000))
        sprite.fillColor = .red
        sprite.strokeColor = .clear
        sprite.position = position
        sprite.zPosition = -1
        sprite.fillShader = SKShader(fileNamed: "inkBlobShader.fsh")
        sprite.position = position
        return sprite
}

Добавление узла:

func touchDown(atPoint pos : CGPoint) {
    //add the sprite to the scene. (THIS IS WHERE THINGS START LAGGING)
    self.addChild(self.shaderSprite(position: pos))
}

1 Ответ

0 голосов
/ 21 марта 2019

Задержка возможна из-за sprite.fillShader = SKShader(fileNamed: "inkBlobShader.fsh"), вызывающего компиляцию шейдера. Попробуйте скомпилировать шейдер, когда сцена загружается и удерживаете ссылку, вместо того, чтобы ждать, пока пользователь взаимодействует со сценой, чтобы загрузить и скомпилировать шейдер.

...