Я использую некоторые из CIFilter
s для выполнения некоторой обработки изображений. Я нашел UIImageView
слишком медленно, чтобы отображать выходные изображения в режиме реального времени. Я следовал documentation и построил GLKView
. Теперь производительность отличная, но изображение отображается в черном прямоугольнике при повороте.Цвет фона для рисования CIImage
Как установить этот цвет фона (зеленый цвет в данном случае) или прозрачный?
Вот фрагмент кода кода. Я вообще не знаком с графическим доменом.
private class ImageView: GLKView {
override init!(frame: CGRect, context: EAGLContext!) { // Called with `.OpenGLES3` context.
ciContext = CIContext(EAGLContext: context, options: [kCIContextWorkingColorSpace: NSNull()])
super.init(frame: frame, context: context)
}
private let ciContext: CIContext
private var image: CIImage? {
didSet {
setNeedsDisplay()
}
}
private override func drawRect(rect: CGRect) {
// Clear with `glClear`... Here is set color from `backgroundColor` (green) and cleared with it.
if image != nil {
ciContext.drawImage(image!, inRect: { /* returned computed rect */ }(), fromRect: image!.extent())
}
}
private override func layoutSubviews() {
super.layoutSubviews()
setNeedsDisplay()
}
}
Я делаю что-то подобное и все еще имею проблемы после добавления выше. Я использую фильтр CIAffineTransform, чтобы повернуть CIImage и получить черный фон. Мой CIContext создается из EAGLContext, и я рисую окончательное изображение в CVPixelBuffer, который в конечном итоге отображается как видеокадра. Я добавил вышеупомянутые вызовы OpenGL, но область за пределами повернутого изображения все еще черная. Любые мысли о других настройках, возможно, необходимо сделать фон прозрачным? Благодаря! – kleezy