Xcode 15 [[可缝合]]金属核心图像内核失败

问题描述 投票:0回答:1

我导入了两个金属文件并定义了两个可缝合的金属核心图像内核,其中一个是

CIColorKernel
,另一个是
CIKernel
。正如 WWDC video 中所述,我需要向其他 Metal Linker 标志添加一个标志
-framework CoreImage
。不幸的是,Xcode 15 在此处添加了双引号并生成错误
metal: error: unknown argument: '-framework CoreImage'
。所以我在没有这个标志的情况下构建,它适用于添加的第一个内核。另一个内核从未添加到 metal.defaultlib 中并且无法加载。我怎样才能让它工作?

       class SobelEdgeFilterHDR: CIFilter {
          var inputImage: CIImage?
          var inputParam: Float = 0.0
    
         static var kernel: CIKernel = { () -> CIKernel in
           let url = Bundle.main.url(forResource: "default",
                                withExtension: "metallib")!
          let data = try! Data(contentsOf: url)

          let kernelNames = CIKernel.kernelNames(fromMetalLibraryData: data)
          NSLog("Kernels \(kernelNames)")
          return try! CIKernel(functionName: "sobelEdgeFilterHDR", fromMetalLibraryData: data)
    }()
    
     override var outputImage : CIImage? {
        guard let inputImage = inputImage else {
            return nil
        }
        
        return SobelEdgeFilterHDR.kernel.apply(extent: inputImage.extent, roiCallback: { (index, rect) in
            return rect }, arguments: [inputImage])
    }
}
ios xcode metal core-image
1个回答
0
投票

我正在使用这些标志并且对我有用:

Other Metal Compiler Flags: -fcikernel

Metal Linker - Build Options: -cikernel

© www.soinside.com 2019 - 2024. All rights reserved.