我正在嘗試使用CALayer 3d變換創建3D用戶界面。我已經想出了實現這一目標的基本技術,但是我的實時性能非常糟糕。具體來說,用戶應該能夠交互地「平移」界面「場景」。使用CATransform3D性能不佳
在下面的代碼片段中,「model」是我嘗試動畫的圖層。 「camera」是一個CATransform3D矩陣,我通過應用觸摸轉換不斷更新。
該方法可行,但平移非常緩慢。如果我用CGAffineTransform取消註釋部分,我得到快速響應的平移 - 但我失去了在平移時應該發生的視角變化。
- (void)didPan:(UIPanGestureRecognizer*)pan
{
if (pan.state==UIGestureRecognizerStateChanged)
{
CGPoint p = [pan translationInView:self.view.window];
camera = CATransform3DTranslate(camera, p.y, 0, -p.x);
model.transform = CATransform3DConcat(camera, modelView);
// CGAffineTransform tA = self.view.transform;
// tA = CGAffineTransformTranslate(tA, p.x, p.y);
// self.view.transform = tA;
[pan setTranslation:CGPointZero inView:self.view.window];
}
}
如何提高渲染性能?