我正在尝试使用 CALayer 3d 转换创建一个 3D 用户界面。我已经想出了实现这一点的基本技术,但是我的实时性能很差。具体来说,用户应该能够交互地“平移”界面“场景”。
在下面的代码片段中,“模型”是我要设置动画的图层。“相机”是一个 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];
}
}
如何提高渲染性能?