我正在尝试使用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];
}
}
如何提高渲染性能?