Подтвердить что ты не робот

CATransform3D против CGAffineTransform?

В чем разница между двумя?

Я уверен, что у них есть плюсы и минусы, а также ситуации, в которых они лучше других.

Любые ресурсы, которые сравнивают эти два?

Лучше для анимации (я представляю CATransform3D)? Почему?

Также я думаю, что я где-то читал, что ясность текста может быть проблемой, лучше ли при масштабировании текста?

4b9b3361

Ответ 1

Как сказал MSN, они используются в разных случаях. CGAffineTransform используется для двумерного манипулирования NSViews, UIViews и других двухмерных графических элементов.

CATransform3D - это структура Core Animation, которая может выполнять более сложные трехмерные манипуляции с CALayers. CATransform3D имеет ту же внутреннюю структуру, что и матрица представления модели OpenGL, что имеет смысл, когда вы понимаете, что Core Animation построена на OpenGL (CALayers - это обертки для текстур OpenGL и т.д.). Я обнаружил, что это сходство внутренней структуры в сочетании с некоторыми хорошими вспомогательными функциями, которые предоставляет Apple, может позволить вам сделать некоторые аккуратные оптимизации OpenGL, поскольку я отправляю здесь.

Когда дело доходит до выбора использования, спросите себя, собираетесь ли вы работать с представлениями непосредственно в двухмерном пространстве (CGAffineTransform) или с базовыми слоями Core Animation в 3-D (CATransform3D). Я чаще использую CATransform3D, но это потому, что я трачу много времени на Core Animation.

Ответ 2

Один для линейных преобразований 2d, другой для трехмерных проекционных преобразований. По крайней мере, это то, что я мог получить из документации.

Если вам не нужно визуализировать 3d, проецируемую на экран, используйте аффинное преобразование. В противном случае используйте 3D-преобразование. 3D-преобразование - это, по сути, матрица 4x4, а 2d-аффинная - 3x2.