Ответ 1
Да, на iOS Core Graphics (Quartz), кажется, накладывается поверх OpenGL ES для рисования, ориентированного на экран, хотя и не в явном виде, к которому у нас есть доступ.
Core Graphics принимает векторные элементы (линии, дуги и т.д.) и некоторые растровые (изображения) и обрабатывает их для отображения на экране или для других форм вывода (файлы PDF, печать и т.д.). Если целью является экран iOS, эти векторные элементы будут размещаться в CALayer, либо напрямую, либо через слой поддержки UIView.
Эти слои Core Animation эффективно обертывают вокруг прямоугольных текстур на графическом процессоре, так как Core Animation может обеспечить плавный перевод, масштабирование и вращение слоев даже на оригинальном оборудовании iPhone. Я не могу найти ссылку для него прямо сейчас, но по крайней мере один доклад WWDC гласит, что OpenGL ES используется Core Animation для связи с GPU для выполнения этого аппаратного ускорения. Нечто похожее можно наблюдать на новом двухпроцессорном MacBook Pro, где более мощный GPU срабатывает при взаимодействии с приложением с использованием Core Animation.
Поскольку Core Graphics растрирует векторные и растровые элементы в CALayer при рисовании на экране, а CALayer эффективно обтекает текстуру OpenGL ES, я бы поставил OpenGL ES ниже Core Graphics на iOS, но только для случая, когда Core Графика - это рендеринг на экране. Причину для размещения "бок о бок" в иерархии, которую вы видели, может быть вызвано тремя факторами: на Mac не все представления поддерживаются с помощью слоя, поэтому они могут не быть аппаратными ускоренными тем же способом; мы не можем реально взаимодействовать с поддержкой OpenGL ES стандартных элементов пользовательского интерфейса, поэтому с точки зрения разработчика они представляют собой различные концепции; и Core Graphics могут использоваться для рендеринга внеэкранных контекстов, таких как файлы PDF или изображения.