我将UIView添加到MTKView并在MTKViewDelegate的DRAW委托方法中对UIView进行动画处理。

GPU / Metal是否可以处理此动画?动画应该更平滑还是与我使用UIView.animate相同?

     func draw(in view: MTKView) {

      let newdescriptor = self.metalview.currentRenderPassDescriptor
      let commandbuffer = self.metalqueue.makeCommandBuffer()
      let commandencoder = commandbuffer?.makeRenderCommandEncoder(descriptor: newdescriptor!)



      // //////////////////////////// //
      timer += 0.01
      var currenttime = sin(timer)
      uiviewbox.transform = CGAffineTransform(rotationAngle: CGFloat(sin(timer)))
      // //////////////////////////// //




      commandencoder?.endEncoding()
      let thedrawable = self.metalview.currentDrawable
      commandbuffer?.present(thedrawable!)
      commandbuffer?.commit()
 }

最佳答案

简短的回答:不,不。实际上,此视图是MTKView的子视图,并且您将draw方法用作时钟这一事实是完全不相关的。您所做的工作与在CADisplayLink的每个回调中更改视图的内容没有什么不同,并且您永远不会问这是效率更高还是在GPU上。实际上,因为这是在主线程上完成的,所以可以说它的效率比普通视图动画低(与使用CADisplayLink技术的UIKit Dynamics相同)。

关于ios - UIViews是MTKViews的 subview ,是否正在GPU上处理/渲染?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60029542/

10-09 21:08