2017-01-19 33 views
1

現在、私はCIFilterを使ってグラデーションを作成しています。コード:SpriteKit - 変化グラデーションを作成する

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

+0

これをはるかに効率的に行うにはいくつかの方法がありますが、それぞれには制限があります。あなたが作成したいグラデーションの種類と、そのグラデーションの種類をどのように切り替えるかを表示できますか? – Confused

+0

@Confusedちょうど上から下に向かって線形のグラデーションを作りたいのですが、色が変わります(上が赤から緑、下が青から黄色に変わり、グラデーションが変化します)。 –

+0

もう一度、申し訳ありません。最初の勾配とデスティネーションの勾配を考えてみてください。私はこれらの事柄の視覚的正確さがなければ助けにならない。グラデーションを作成する方法はたくさんありますが、さらに多くの種類のグラデーションがあります。 – Confused

答えて

関連する問題