UIViews, которые являются подпредставлениями MTKViews, обрабатываются / отображаются на GPU? - PullRequest
0 голосов
/ 02 февраля 2020

Я добавляю UIView в MTKView и анимирую UIView в методе делегата DRAW MTKViewDelegate.

Будет ли эта анимация обрабатываться графическим процессором / металлом? Должна ли анимация быть более плавной или такой же, как если бы я использовал 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()
 }

1 Ответ

0 голосов
/ 02 февраля 2020

Краткий ответ: нет и нет. Фактически тот факт, что это представление является вложенным представлением MTKView и что вы используете метод draw в качестве часов, совершенно не имеет значения. То, что вы делаете, ничем не отличается от изменения представления о каждом обратном вызове из CADisplayLink - и вы никогда не спросите, был ли , который более эффективен, или на GPU. Фактически, поскольку это делается в основном потоке, это, вероятно, на меньше эффективнее, чем обычная анимация представления (так же, как UIKit Dynamics, которая также использует технику CADisplayLink).

...