2017-01-19 3 views
1

Momentan erstelle ich einen Farbverlauf mit CIFilter. Code:SpriteKit - Erstellen von Farbverläufen

//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 

Mein Ziel ist es, einen Hintergrundfarbverlauf zu erstellen, der die Farbe ändert. Als ich versuchte, dies mit CIFilter zu tun, funktionierte es, aber meine CPU sprang auf 100%, viel höher als meine üblichen 20%.

Gibt es einen anderen Weg, dies zu erreichen?

Vielen Dank im Voraus

Wenn die Farbe der Gradienten benötigt:

Start Destination

+0

Es gibt ein paar Möglichkeiten, dies wesentlich effizienter zu machen, aber jeder hat seine Grenzen. Gibt es eine Möglichkeit, die Arten von Farbverläufen anzuzeigen, die Sie erstellen möchten, und wie Sie diese von einem zum anderen wechseln möchten? – Confused

+0

@Confused Ich möchte nur einen linearen Farbverlauf von oben nach unten machen, der die Farbe ändert (Der obere Bereich kann von rot nach grün und der untere Bereich von blau nach gelb wechseln.) –

+0

Nochmal, tut mir leid, ich muss Sehen Sie, was Sie für den ersten Farbverlauf und den Zielgradienten halten. Ich kann nicht ohne eine visuelle Genauigkeit dieser Dinge helfen. Es gibt viele Möglichkeiten, Gradienten zu erstellen, und es gibt viele weitere Arten von Gradienten. – Confused

Antwort

Verwandte Themen