SpriteKit - 创建不断变化的渐变

时间:2017-01-19 00:24:35

标签: swift sprite-kit gradient cifilter

目前我正在使用CIFilter创建渐变。代码:

//In update function

let context = CIContext(options: nil)
let filter = CIFilter(name: "CILinearGradient")
let startVector = CIVector(x: size.width * 0.5, y: 0)
let endVector = CIVector(x: size.width * 0.5, y: size.height)
let color1 = CIColor(red: red1/255, green: green1/255, blue: blue1/255, alpha: 1)
let color2 = CIColor(red: red2/255, green: green2/255, blue: blue2/255, alpha: 1)

//Here I would change all rgb values by +- 0.2 - 0.5

filter!.setDefaults()

filter!.setValue(startVector, forKey: "inputPoint0")
filter!.setValue(endVector, forKey: "inputPoint1")
filter!.setValue(color1, forKey: "inputColor0")
filter!.setValue(color2, forKey: "inputColor1")

let image = context.createCGImage(filter!.outputImage!, from: CGRect(x: 0, y: 0, width: size.width, height: size.height))
let texture = SKTexture(image: UIImage(cgImage: image!))
backgroundImage.texture = texture

我的目标是创建一个改变颜色的背景渐变。当我尝试使用CIFilter执行此操作时,它可以正常工作,但我的CPU上升到100%,远高于我通常的20%。

还有其他方法可以实现这个目标吗?

提前致谢

如果需要渐变的颜色:

Start Destination

1 个答案:

答案 0 :(得分:0)

我发现这个非常好的git具有很多功能。这应该可以帮到你。

https://github.com/braindrizzlestudio/BDGradientNode