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];
}
}
レンダリングのパフォーマンスを向上させるにはどうすればよいですか?