Ядро OpenGL
macOS графическая модель |
---|
Рендеринг |
Композитинг |
Core OpenGL , или CGL , — это Apple Inc. Macintosh Quartz интерфейс оконной системы для OS X реализации спецификации OpenGL . CGL аналогичен GLX , который является интерфейсом X11 для OpenGL, а также WGL , который является интерфейсом Microsoft Windows для OpenGL.
История
[ редактировать ]Все интерфейсы оконной системы для OpenGL возникли в результате миграции Silicon Graphics собственного программного интерфейса приложений 3D-графики ( API ) IrisGL к его текущей открытой стандартной форме OpenGL. Когда было принято решение сделать IrisGL открытым стандартом, основным необходимым изменением в конструкции было сделать этот графический стандарт API независимым от оконной системы. Поэтому вся логика, специфичная для оконной системы, была удалена из IrisGL при переходе на OpenGL. Логика оконной системы включает в себя любой механизм событий для сбора входных данных от таких устройств, как клавиатуры и мыши, а также любую логику упорядочивания или изменения размера окон, используемую при отрисовке в современном оконном пользовательском интерфейсе. Кроме того, все внутреннее управление буферами оконной памяти, иногда называемыми поверхностями, также было удалено из IrisGL для создания OpenGL.
Поскольку оконная система OpenGL не зависит от оконной системы, такие компании, как Apple, должны взять на себя бремя настройки и управления поверхностями, используемыми в качестве места назначения для рендеринга OpenGL.
Функции
[ редактировать ]Интерфейсы оконной системы
[ редактировать ]В OS X CGL является базовым слоем интерфейсов оконной системы для OpenGL. И AGL (графическая библиотека Apple), и Cocoa (API) (или AppKit) имеют интерфейсы для OpenGL, являются логическими уровнями программного обеспечения и в своем поведении зависят от CGL. CGL и AGL свободно взаимодействуют. CGL и Cocoa можно использовать вместе, однако классы Cocoa могут неявно вносить изменения в состояние CGL. Вызовы функций из AGL и Cocoa не следует смешивать.
Конфигурация этих поверхностей осуществляется посредством процесса выбора формата пикселей, при котором различные совместимые слои информации рендеринга объединяются для формирования кадрового буфера . Примерами таких слоев являются буферы цвета, буферы прозрачности (альфа), буферы трафаретов и буферы глубины . Функция CGL CGLChosePixelFormat используется для выполнения этой проверки совместимости буфера. CGLChoosePixelFormat на основе входных параметров и их политики оценки выберет формат пикселей, который представляет совместимую конфигурацию буфера, поддерживаемую базовым средством рендеринга, который будет использоваться для обработки графических команд. Средства рендеринга могут быть либо аппаратными, то есть соответствовать видеокартам, установленным в системе, либо программными, где главный процессор системы выполняет всю обработку графических команд и окончательную работу по растеризации .
Обработка неоднородности Mac OS X
[ редактировать ]В Mac OS X CGL также отвечает за обработку гетерогенного характера установки и настройки графических устройств в системах Macintosh. На компьютерах Macintosh может быть установлено любое количество дисплеев и видеокарт. В этих конфигурациях рабочий стол пользователя может быть виртуализирован (расширен) или зеркально отображен на нескольких дисплеях, подключенных к нескольким видеокартам, которые могут быть или не быть от одного и того же поставщика графики.
Управление рендерингом
[ редактировать ]Когда пользователи настраивают свой Macintosh для использования виртуализированного рабочего стола и перетаскивают окна с одного дисплея на другой, CGL управляет состоянием графики OpenGL, которое должно дублироваться между устройствами, чтобы обеспечить согласованность обработки команд между ними. Перетаскивание окна на рабочем столе Macintosh между двумя разными дисплеями, поддерживаемыми двумя разными средствами визуализации, называется «Смена виртуального экрана».
CGL также предоставляет механизм для получения информации об используемом в данный момент средстве визуализации. Основной структурой данных, которая поддерживает состояние OpenGL в Mac OS X, является CGLContextObj . Эти контексты CGL можно получить в любое время с помощью вызова CGLGetCurrentContext . можно Затем у CGLContextObj запросить сведения о связанном с ним средстве визуализации.
Программный рендерер
[ редактировать ]Также включен собственный программный рендерер OpenGL от Apple . Первоначально это был простой целочисленный пакет. В Mac OS X 10.3 был введен новый формат с плавающей запятой, который в конечном итоге заменил его . Программный рендеринг, хотя и медленный, но достаточно быстрый для базовых приложений и сохраняет полную функциональность. Архивировано 8 января 2014 года на Wayback Machine с реализацией OpenGL для OS X для целей разработки.
См. также
[ редактировать ]- GLX : эквивалентный интерфейс X11 для OpenGL.
- WGL : эквивалентный Microsoft Windows для OpenGL. интерфейс
- АГЛ
- OpenGL
- GLUT : интерфейс более высокого уровня, скрывающий различия между WGL, GLX и т. д.
Внешние ссылки
[ редактировать ]- Справочное руководство CGL на веб-сайте Apple (html). - Архивировано 12 августа 2014 г. в Wayback Machine.
- Справочное руководство CGL на веб-сайте Apple (PDF). - Архивировано 24 августа 2014 г. в Wayback Machine.