我正在尝试通过使用“金属”视图在相机Feed上显示滤镜:MTKView。我密切关注Apple的示例代码的方法- 通过利用TrueDepth摄像机数据(链接)来增强实时视频。
以下代码效果很好(主要从上述示例代码解释):
class MetalObject: NSObject, MTKViewDelegate {
private var metalBufferView : MTKView?
private var metalDevice = MTLCreateSystemDefaultDevice()
private var metalCommandQueue : MTLCommandQueue!
private var ciContext : CIContext!
private let colorSpace = CGColorSpaceCreateDeviceRGB()
private var videoPixelBuffer : CVPixelBuffer?
private let syncQueue = DispatchQueue(label: "Preview View Sync Queue", qos: .userInitiated, attributes: [], autoreleaseFrequency: .workItem)
private var textureWidth : Int = 0
private var textureHeight : Int = 0
private var textureMirroring = …Run Code Online (Sandbox Code Playgroud) 我正在使用 Xcode 11 GM Seed (11A419c)。当我在 iOS 13 模拟器上运行 Metal 代码并尝试访问使用 MTLCreateSystemDefaultDevice() 创建的金属设备时,它返回 nil。如果没有这个设备,Metal 应该如何在模拟器上运行?XCode 中是否有任何设置可以修复它?如果重要的话,我有运行 Mac OS 10.14.6 的 Macbook Pro Retina 2012 型号。
我正在尝试使用 CoreImage & Metal 处理一系列 UIImages 并显示它们。我的问题是如果我的 gcd 块很忙,我想删除传入的图像。我如何实现这个 GCD 队列,我如何定义队列的最大缓冲区大小?