Ios 是否在GPU上处理/呈现作为MTKViews子视图的UIView?
我正在将UIView添加到MTKView,并在MTKViewDelegate的DRAW delegate方法中设置UIView的动画 此动画是否由GPU/Metal处理?动画应该更平滑还是与使用UIView.animate时相同Ios 是否在GPU上处理/呈现作为MTKViews子视图的UIView?,ios,swift,uiview,metal,mtkview,Ios,Swift,Uiview,Metal,Mtkview,我正在将UIView添加到MTKView,并在MTKViewDelegate的DRAW delegate方法中设置UIView的动画 此动画是否由GPU/Metal处理?动画应该更平滑还是与使用UIView.animate时相同 func draw(in view: MTKView) { let newdescriptor = self.metalview.currentRenderPassDescriptor let commandbuffer = self
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的效率相同) “在MTKViewDelegate的DRAW delegate方法中设置UIView动画”这是什么意思?你能显示代码吗?draw方法在每一帧都会被调用,我想这是iPhone显示器和GPU之间的连接。我肯定是错的,因为我认为着色器是GPU上运行的实际函数,而draw方法不是着色器。现在发布代码。是的,这就是我认为你的意思。:)