Какая разница между Quartz Core, Core Graphics и Quartz 2D?
Интересно, может ли кто-то отличить именно это?
Насколько я понимаю, Core Graphics - это всего лишь "Framework Package", который содержит Quartz Core и Quartz 2D. Но я не уверен, действительно ли Quartz 2D является Quartz Core? Может быть, кто-то может нарисовать там несколько строк? Что составляет различия между ними?
При взгляде на документацию я вижу, что Quartz Core публикует все материалы Core Animation. Итак, Quartz Core == Основная анимация?
Ответы
Ответ 1
Из Quartz 2D Programming Guide:
Quartz 2D API является частью Core Графическая структура, поэтому вы можете видеть Кварц называется Core Graphics или, просто, CG.
У меня есть склонность использовать кварцевую и основную графику взаимозаменяемо при обращении к двухмерному рисунку на Mac/iPhone, даже если это не технически правильно.
Основа Quartz Core на iPhone содержит классы и вспомогательные элементы для Core Animation, а также содержит элементы, используемые для Core Image.
Ответ 2
Quartz 2D - это API-интерфейс платформы Core Graphics, которая реализует чертеж.
Quartz Core - это платформа, которая включает в себя API для анимации и обработки изображений.
Кварцевые рамки и их API
CoreGraphics.framework
- Quartz 2D API управляет графическим контекстом и реализует чертеж.
- API Quartz предоставляет низкоуровневый доступ к серверу окон. Это включает в себя аппаратное обеспечение дисплея, разрешение, частоту обновления и другие.
QuartzCore.framework
- Core Animation: Objective-C API для 2D-анимации.
- Core Image: обработка изображений и видео (фильтры, warp, переходы). iOS 5
Quartz.framework
OS X только
- Image Kit: отображать и редактировать изображения.
- PDF Kit: отображение и редактирование PDF файлов.
- Quartz Composer: отображать композиции кварцевых композиторов.
- QuickLookUI: просмотр элементов мультимедиа.
Все три фреймворка используют OpenGL внизу, потому что все чертежи в iOS или OS X проходят через OpenGL в какой-то момент. Подробнее см. В разделе "Структуры медиа-слоя" в обзоре технологий Mac OS X.
Другие технологии "кварца", о которых вы, возможно, слышали:
- Quartz Extreme: ускорение графического процессора для кварцевого композитора.
- QuartzGL (он же "Quartz 2D Extreme" ): ускорение GPU для Quartz 2D.
Это внутренние реализации рендеринга GPU, а не API. Они решают, нужно ли создавать буфер окна в ЦП и использовать OpenGL для загрузки как текстуры (по умолчанию) или для всего рендеринга с использованием OpenGL, который not всегда повышает производительность. Вы можете переключаться между ними, используя параметр QuartzGLEnable Info.plist. Объяснение см. В обзоре John Siracusa Mac OS X 10.4 Tiger, страницы 13 и 14.
"Кварц" и "Ядро" - это маркетинговые имена, разбросанные по фреймворкам и API, случайным образом. Если им захотелось создать путаницу в именовании, им это удалось.
Ответ 3
Однако будьте осторожны, новое приложение с одним представлением свяжет структуру CoreGraphics по умолчанию, но не QuartzCore. Таким образом, вы можете быстро получить ошибку "неизвестного объекта", если вы делаете что-либо с CAEAGLLayer
, например.