Я рендеринг от CIImage
до MTKView
, и изображение меньше, чем рисовать.
let centered = image.transformed(by: CGAffineTransform(translationX: (view.drawableSize.width - image.extent.width) / 2, y: (view.drawableSize.height - image.extent.height) / 2))
context.render(centered, to: drawable.texture, commandBuffer: buffer, bounds: centered.extent, colorSpace: CGColorSpaceCreateDeviceRGB())
Я ожидаю, что приведенный выше код отобразит изображение в центре представления, но вместо этого изображение расположено в исходной точке.
Вот репозиторий, иллюстрирующий проблему: https://github.com/truemetal/centered-render-of-ciimage-to-mtkview
Прежде чем обвинять Metal
или CoreImage
Я хотел бы убедиться, что я не делаю что-то не так.
Буду признателен за ссылку на документацию, в которой говорится, что я не могу сделать что-то подобное.
![problem screenshot](https://i.stack.imgur.com/Tivgc.png)
Я могу обойти этоэто путем наложения изображения поверх другого, которое будет точно такого же размера, как и рисованный объект, но мне все еще интересно, почему именно приведенный выше код не работает.
let centered = image.transformed(by: CGAffineTransform(translationX: (view.drawableSize.width - image.extent.width) / 2, y: (view.drawableSize.height - image.extent.height) / 2))
let background = CIImage(color: .white).cropped(to: CGRect(origin: .zero, size: view.drawableSize))
let preparedImage = centered.composited(over: background)
self.context.render(preparedImage, to: drawable.texture, commandBuffer: buffer, bounds: preparedImage.extent, colorSpace: CGColorSpaceCreateDeviceRGB())