2009-02-20 15 views
23

Whats sự khác biệt giữa hai?CATransform3D so với CGAffineTransform?

Tôi chắc chắn rằng họ có ưu và nhược điểm, và các tình huống họ là người biểu diễn tốt hơn.

Bất kỳ tài nguyên nào so sánh hai tài khoản?

Có tốt hơn cho hoạt ảnh (tôi tưởng tượng CATransform3D) không? Tại sao?

Ngoài ra, tôi nghĩ rằng tôi đã đọc ở đâu đó rằng sự rõ ràng của văn bản có thể là một vấn đề, tốt hơn là ở mở rộng văn bản?

Trả lời

20

Như MSN đã nói, chúng được sử dụng trong các trường hợp khác nhau. CGAffineTransform được sử dụng cho thao tác 2-D của NSViews, UIViews và các phần tử đồ họa lõi 2 chiều khác.

CATransform3D là cấu trúc Hoạt ảnh cốt lõi có thể thực hiện các thao tác phức tạp hơn 3-D của CALayers. CATransform3D có cùng cấu trúc bên trong như một ma trận khung nhìn mô hình OpenGL, điều này có ý nghĩa khi bạn nhận ra rằng Core Animation được xây dựng trên OpenGL (CALayers là các trình bao bọc cho các kết cấu OpenGL, v.v.). Tôi đã thấy rằng sự giống nhau về cấu trúc bên trong, kết hợp với một số chức năng trợ giúp tốt đẹp mà Apple cung cấp, có thể cho phép bạn thực hiện một số tối ưu hóa OpenGL gọn gàng, như tôi đăng here.

Khi chọn tùy chọn sử dụng, hãy tự hỏi xem bạn có đang làm việc trực tiếp với chế độ xem trong không gian 2 chiều (CGAffineTransform) hay với lớp Lõi hoạt hình cơ bản trong 3-D (CATransform3D). Tôi sử dụng CATransform3D thường xuyên hơn, nhưng đó là vì tôi dành rất nhiều thời gian với Core Animation.

7

Một là dành cho các phép biến đổi 2d tuyến tính, giá trị kia dành cho các phép biến đổi dự đoán ba chiều. Ít nhất đó là những gì tôi có thể thu thập từ tài liệu.

Nếu bạn không cần hiển thị 3d chiếu lên màn hình, hãy sử dụng biến đổi affine. Nếu không, hãy sử dụng phép biến đổi 3d. Biến đổi 3d về cơ bản là ma trận 4x4, trong khi ma trận 2d là 3x2.

+0

2D Ảnh hưởng thường rộng 3 x 2 cao (với danh tính ngụ ý ẩn trong hàng dưới cùng). – plinth

+0

Tôi gặp sự cố với tốc độ khung hình nhấp nháy/giảm tốc và sửa lỗi này! –

Các vấn đề liên quan