Во-первых, я хочу немного прояснить терминологию.Когда люди говорят о Core Graphics, они обычно ссылаются на Quartz 2D Drawing, который представляет собой API-интерфейс для двумерного векторного рисования.Он используется для рисования векторных элементов на экране или вне контекста, таких как PDF-файлы.Core Animation отвечает за анимацию, макет и некоторые ограниченные трехмерные эффекты, включающие прямоугольные слои и элементы пользовательского интерфейса.OpenGL ES - это низкоуровневый API для общения с графическим оборудованием на устройствах iOS как для двумерного, так и для трехмерного рисования.
Вы задаете много вопросов и решаете, что лучшев каждом сценарии субъективно и полностью зависит от разработчика и их конкретных потребностей.Однако я могу дать несколько общих советов.
В целом, рекомендации, которые вы увидите в документации Apple и в презентациях инженеров, заключаются в том, что лучше всего использовать наивысший уровень абстракции, который решает вашиконкретная проблема.
Если вам нужно просто нарисовать 2-D пользовательский интерфейс, первое, что вы должны попробовать - это реализовать его с помощью предоставленных Apple элементов UIKit.Если у них нет необходимых вам возможностей, создайте пользовательский UIViews.Если вы разрабатываете кроссплатформенный код для Mac-iOS (как в платформе Core Plot), вы можете перейти к использованию пользовательских Cayayers Core Animation.Каждый шаг в этом процессе требует, чтобы вы писали больше кода, чтобы справиться с вещами, которые вышеупомянутый уровень сделал для вас.
Вы можете сделать удивительное количество вещей с Core Animation, с довольно хорошей производительностью.Это не ограничивается только двумерной анимацией, но может распространяться и на простую трехмерную работу.
OpenGL ES находится под чертежом всего, что вы видите на экране для устройства iOS, хотяэто не подвергается вам.Таким образом, он обеспечивает наименьшую абстракцию для визуализации на экране и требует от вас написания большей части кода, чтобы что-то сделать.Тем не менее, это может быть необходимо в ситуациях, когда вы хотите извлечь максимальную производительность из 2-D отображения (скажем, в игре-экшене) или визуализировать настоящие 3-D объекты и среды.
Опять же, я склоненрекомендовать людям начинать с самого высокого уровня абстракции при написании приложения и опускаться вниз только тогда, когда они обнаруживают, что не могут что-то сделать или производительность не соответствует спецификации, к которой они стремятся.Меньшее количество строк кода облегчает написание, отладку и сопровождение приложений.
Тем не менее, есть несколько хороших сред, разработанных для абстрагирования от OpenGL ES, таких как cocos2D и Unity 3D, которые могут сделать работу сOpenGL ES проще во многих ситуациях.Для каждого случая вам необходимо оценить, что имеет смысл для конкретных потребностей вашего приложения.