2016-04-09 29 views
0

Bir CIFilter için bir çözgü çekirdeği oluşturmaya çalışıyorum, ancak geri döndüğüm görüntü boş, örn. Doğru boyutta bir görüntü, ancak sadece bir renk.Çekirdek Resim Filtresi boş görüntüyü döndürüyor

Benim filtre şöyle görünür:

class MyWarpFilter: CIFilter { 
    var inputImage: CIImage? 
    let kernel = CIWarpKernel(string: getKernelString("mirrorX")) 

    override var outputImage: CIImage? { 
     guard let inputImage = inputImage, kernel = kernel else { return nil } 
     let extend = inputImage.extent 
     let imageWidth = inputImage.extent.size.width 
     let arguments = [imageWidth] 
     return kernel.applyWithExtent(
      extend, 
      roiCallback: { 
       (index, rect) in 
       return rect 
      }, 
      inputImage: inputImage, 
      arguments: arguments as [AnyObject]) 
    } 
} 

Çekirdeğim şöyle görünür:

kernel vec2 mirrorX(float imageWidth) { 
    vec2 input = destCoord(); 
    return vec2(imageWidth - input.x, input.y); 
} 

Ben beklendiği gibi geri orijinal görüntü elde return destCoord(); ile çekirdeğin gövdesini değiştirin.

Çekirdek, iOS için 2014 WWDC sunumu 512: Gelişen Çekirdek Resim Filtrelerini kullanıyor, bu yüzden çalışmasını beklerim ve bana doğru görünüyor.

cevap

0

Görünüşe input ile yerine ayrılmış bir anahtar kelimedir:

kernel vec2 mirrorX(float imageWidth) { 
    vec2 p = destCoord(); 
    return vec2(imageWidth - p.x, p.y); 
} 

inşaat iyi!

İlgili konular