【发布时间】:2012-04-10 12:43:32
【问题描述】:
我正在尝试使用 CALayer 3d 变换创建 3D 用户界面。我已经想出了实现这一点的基本技术,但是我的实时性能很差。具体来说,用户应该能够交互地“平移”界面“场景”。
在下面的 sn-p 中,“模型”是我要设置动画的层。 “相机”是一个 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];
}
}
如何提高渲染性能?
【问题讨论】:
标签: ios cocoa-touch quartz-graphics