2009-02-20 5 views
23

둘 사이의 차이점은 무엇입니까? CATransform3D 대 CGAffineTransform?

나는 그들이 더 나은 공연이다 그들이 장점과 단점, 그리고 상황을 확신한다. 두 가지를 비교

모든 자원?

애니메이션 용으로 더 좋습니까? (CATransform3D를 상상해보십시오)? 왜?

또한 텍스트의 선명도가 문제가 될 수 있다고 생각합니다. 텍스트를 확장하는 것이 더 좋습니다.

답변

20

MSN이 말했듯이, 그들은 다른 경우에 사용됩니다. CGAffineTransform은 NSViews, UIViews 및 기타 2D 코어 그래픽 요소를 2D로 조작하는 데 사용됩니다.

CATransform3D는 CALayers의보다 복잡한 3 차원 조작을 수행 할 수있는 코어 애니메이션 구조입니다. CATransform3D는 OpenGL 모델 뷰 매트릭스와 동일한 내부 구조를 가지고 있습니다.이 매트릭스는 Core Animation이 OpenGL (CALayers는 OpenGL 텍스처 등을위한 래퍼입니다)을 기반으로 만들어 졌음을 인식 할 때 유용합니다. Apple이 제공하는 훌륭한 도우미 기능과 결합 된 내부 구조의 유사성은 내가 here이라고 게시 한 것처럼 깔끔한 OpenGL 최적화를 수행 할 수 있음을 발견했습니다.

어떤 것을 사용할지 선택하는 경우 2 차원 공간 (CGAffineTransform)에서 직접 또는 3 차원 (CATransform3D)에서 기본 Core Animation 레이어로 작업 할 것인지 스스로에게 물어보십시오. 더 자주 CATransform3D를 사용하지만 Core Animation과 많은 시간을 보내기 때문입니다.

7

하나는 선형 2 차원 변환을위한 것이고 다른 하나는 3 차원 투영 변환을위한 것입니다. 적어도 그것이 문서에서 수집 할 수있는 것입니다.

화면에 투영 된 3D를 렌더링 할 필요가없는 경우, 아핀 변환을 사용하십시오. 그렇지 않으면 3d 변형을 사용하십시오. 3d 변환은 본질적으로 4x4 매트릭스이며, 2d affine one은 3x2입니다.

+0

2 차원 Affine은 일반적으로 3 행 x 2 높이 (맨 아래 행에 보이지 않는 묵시적 ID가 있음)입니다. – plinth

+0

깜박임/감소 된 프레임 속도에 문제가있어서이 문제가 해결되었습니다. –