2016-04-09 10 views
0

CIFilterのワープカーネルを構築しようとしていますが、戻ってきた画像は空です。正しいサイズの画像ですが、1色の画像です。Core Image Filterは空の画像を返します

私のフィルタは次のようになります。

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]) 
    } 
} 

私のカーネルは、次のようになります。

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

私はreturn destCoord();とカーネルの体を交換する場合、予想通り、私は、元の画像を取り戻します。

カーネルは2014 WWDCプレゼンテーションのものです。512:iOS向けコアイメージフィルタの開発これはうまくいくと思っています。どうやら

答えて

0

inputはでそれを置き換える、予約済みのキーワードである:

kernel vec2 mirrorX(float imageWidth) { 
    vec2 p = destCoord(); 
    return vec2(imageWidth - p.x, p.y); 
} 
だけで正常に動作し

関連する問題