Преимущества использования Core Graphics - PullRequest
7 голосов
/ 06 октября 2011

Я хотел бы знать, какие преимущества я получаю от использования Core Graphics вместо Open GL ES.Мой главный вопрос основан на этом:

  • Создание простых анимаций просмотра.
  • Создание некоторых визуально привлекательных объектов (например, графики, например, основного графика, анимированных объектов и т. Д.).
  • Время, затрачиваемое (как на обучение, так и на реализацию)
  • Простые 2D-игры
  • Сложные 2D-игры
  • 3D-игры
  • Обслуживание кода и более чистый код.
  • Упрощенная интеграция с другими элементами пользовательского интерфейса.

Спасибо.

Ответы [ 2 ]

21 голосов
/ 06 октября 2011

Во-первых, я хочу немного прояснить терминологию.Когда люди говорят о 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 проще во многих ситуациях.Для каждого случая вам необходимо оценить, что имеет смысл для конкретных потребностей вашего приложения.

4 голосов
/ 06 октября 2011

В основном, используйте OpenGL, если вы создаете игру. В противном случае используйте CoreGraphics. CoreGraphics позволяет вам делать простые вещи, встроенные в ваш обычный код пользовательского интерфейса.

Создание простой анимации просмотра. -> CG

Создание некоторых визуально привлекательных объектов (например, графики, например, основного графика, анимированных объектов и т. Д.). -> CG

трудоемкий (как обучения, так и реализации) -> OpenGL и CG поначалу довольно сложны.

Простые 2D игры -> OpenGL

сложные 2D игры -> OpenGL

3D игры -> OpenGL

Код обслуживания и очистки кода. -> Не имеет значения

...