我正在尝试制作基于金属的CIFilter,因为Apple似乎更喜欢您使用它,但是我遇到了问题,因为我需要合并多个大小可能不同的图像。这意味着我必须使用归一化的坐标和采样器来“拉伸”各种输入图像。
这是一个示例内核:
extern "C" { namespace coreimage {
float4 stretchKernel(
sampler image
) {
return image.sample(image.coord());
}
}}
...,我这样实现:
let arguments: [Any] = [
CISampler(image: startingImage, options: samplerOptions)
]
return kernel.apply(extent: startingImage.extent, arguments: arguments)
现在有点奇怪了。如果运行此命令,则会出现以下错误:
Argument info count 1 for function composition does not match argument count 4 in declaration of function
就好像采样器在内核函数中被当作四个独立的参数一样,但是我只能将它们作为一个参数传递。我在使用正确的类将映像传递到内核吗?内核声明有问题吗?也许我可以使用其他方法来获取各种图像的标准化坐标和采样器吗?
答案 0 :(得分:2)
好吧,我不知道为什么无法从文档中找到答案,但是原因似乎是:
类型与filter
不兼容。我敢说有一个很好的理由,但是我不知道为什么没有更明确地说明它。解决方案是改用普通的CIColorKernel
。