我将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/