CALayer 3D変換を使用して3Dユーザーインターフェイスを作成しようとしています。私はこれを達成するための基本的なテクニックを考え出しましたが、私のリアルタイムパフォーマンスはかなり悪いです。具体的には、ユーザはインタフェイス「シーン」をインタラクティブに「パン」することができなければならない。CATransform3Dを使用したパフォーマンスが悪い
次のスニペットでは、「モデル」はアニメーション化しようとしているレイヤーです。 「カメラ」は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];
}
}
レンダリングのパフォーマンスを向上させるにはどうすればよいですか?