我在用
CoreImageHelpers
作为使用金属通过摄像机显示实时过滤输出的基础。问题是,当我期望Metal的性能比更新UIImageView甚至OpenGL要好得多时,我意外地得到了高电池冲击。
更新:测试
my forked version
,或
在测试原始项目之前,请务必更新以下内容:
-在ImageView.swift,draw()必须在commandBuffer.commit()
-包裹DispatchQueue.main.async 周围connection.videoOrientation 捕获输出:
DispatchQueue.main.async{
connection.videoOrientation = AVCaptureVideoOrientation(rawValue: UIApplication.shared.statusBarOrientation.rawValue)!
}
我在iphone6splus上进行测试,当在Debug Navigator中查看时,CICMYKHalftone效应会将电池的冲击提升到很高的水平。
我认为使用这个金属视图将极大地提高性能,但它似乎没有,即使运行在一个较低的帧速率25-30帧每秒。
更新
我添加的另一个性能更新是MTKView对preferredFramesPerSecond的设置,我将其设置为30,因为它在默认情况下每秒最多调用60次。我将其与较低的设备帧速率相结合,以实现更好的性能和更少的电池影响。