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.