В чем может быть решение устаревшего "EAGLContext"? - PullRequest
0 голосов
/ 09 апреля 2019

Я хочу использовать встроенные фильтры для моего приложения, функция работает, но я хочу избежать методов, которые будут удалены из документации.Я ищу по всему интернету, и нет решения.

Я ищу по всему интернету и не нашел решения по моей проблеме.

public func applyFilterTo(image: UIImage, filterEffect: Filter) -> UIImage? {
    guard let cgImage = image.cgImage,
          let openGLContext = EAGLContext(api: .openGLES3) else {
            return nil
    }
    let context = CIContext(eaglContext: openGLContext)
    let ciImage = CIImage(cgImage: cgImage)
    let filter = CIFilter(name: filterEffect.filterName)

    filter?.setValue(ciImage, forKey: kCIInputImageKey)

    if let filterEffectValue = filterEffect.filterEffectValue, let filterEffectValueName = filterEffect.filterEffectValueName {
        filter?.setValue(filterEffectValue, forKey: filterEffectValueName)
    }

    var filteredImage: UIImage?

    if let output = filter?.value(forKey: kCIOutputImageKey) as? CIImage,
        let cgiImageResult = context.createCGImage(output, from: output.extent) {
        filteredImage = UIImage(cgImage: cgiImageResult)
    }

    return filteredImage

}

Результат хороший, но меня беспокоит аннулирование предупреждений в моем приложении.Спасибо

1 Ответ

2 голосов
/ 09 апреля 2019

EAGLContext является частью OpenGL, которая устарела.На этом этапе вы должны переключиться на Металл .

...