什么是“EAGLContext”弃用的解决方案?

问题描述 投票:-1回答:1

我想为我的应用程序使用本机过滤器,该功能有效,但我想避免将从文档中删除的方法。我搜索整个互联网,没有解决方案。

我在整个互联网上搜索,我没有找到任何解决方案。

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

}

结果很好,但我的担心是在我的应用程序中排除警告。谢谢

swift deprecated core-image eaglcontext
1个回答
2
投票

EAGLContext是OpenGL的一部分,不推荐使用。你应该在这个阶段加入switch to Metal

© www.soinside.com 2019 - 2024. All rights reserved.