【问题标题】:Loading SKShapeNode with custom fillShader causes program to hang使用自定义 fillShader 加载 SKShapeNode 会导致程序挂起
【发布时间】:2019-08-11 16:13:36
【问题描述】:

我正在尝试使用自定义的 fillShader 加载 SKShapeNode,当我单击鼠标时它会开始动画。当我这样做时,程序开始挂起大约一秒钟左右。为什么是这样?这段代码有问题吗?

我的着色器是在哪里制作的:

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))
}

【问题讨论】:

    标签: ios swift macos sprite-kit


    【解决方案1】:

    延迟可能是因为sprite.fillShader = SKShader(fileNamed: "inkBlobShader.fsh") 导致着色器被编译。尝试在场景加载并保持引用时编译着色器,而不是等到用户与场景交互才加载和编译着色器。

    【讨论】:

      猜你喜欢
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多