Я пытаюсь сделать 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
Это как если бы сэмплеры обрабатывались как четыре отдельных аргумента в функции ядра, но я могу передать их только какодин.Я использую правильный класс для передачи изображения в ядро?Что-то не так с объявлением ядра?Могу ли я использовать какой-нибудь другой метод для получения нормализованных координат и сэмплеров для моих различных изображений?