Ядро OpenGL - Core OpenGL

Ядро OpenGL, или CGL, является Apple Inc. Macintosh Quartz оконная система интерфейс к OS X реализация OpenGL Технические характеристики. CGL аналогичен GLX, какой X11 интерфейс к OpenGL, а также WGL, какой Майкрософт Виндоус интерфейс к OpenGL.

История

Все оконные системы взаимодействуют с OpenGL возник в результате миграции Силиконовая Графика собственный программный интерфейс приложения для 3D-графики (API ) IrisGL в его текущую открытую стандартную форму OpenGL. Когда было принято решение сделать IrisGL открытым стандартом, основное необходимое изменение дизайна заключалось в том, чтобы сделать этот графический стандартный API-интерфейс независимой от оконной системы. Поэтому при переходе на OpenGL вся логика, относящаяся к оконной системе, была удалена из IrisGL. Логика оконной системы включает в себя любой механизм событий для сбора входных данных с таких устройств, как клавиатуры и мыши, а также любую логику упорядочивания окон или размера, используемую при рисовании в современном оконном пользовательском интерфейсе. Кроме того, все внутреннее управление буферами оконной памяти, иногда называемыми поверхностями, также было удалено из IrisGL для создания OpenGL.

Поскольку OpenGL не зависит от оконной системы, такие компании, как Apple, должны взять на себя бремя настройки и управления поверхностями, используемыми в качестве места назначения для рендеринга OpenGL.

особенности

Интерфейсы оконной системы

В OS X CGL является базовым уровнем интерфейсов оконной системы для OpenGL. И то и другое AGL (Apple Graphics Library) и Какао (API) (или AppKit) имеют интерфейсы к OpenGL, являются логическими уровнями программного обеспечения и зависят от CGL в своем поведении. CGL и AGL свободно взаимодействуют. CGL и Какао могут использоваться вместе, однако классы Какао могут неявно вносить изменения в состояние CGL. Вызовы функций из AGL и Какао не следует смешивать.

Конфигурация этих поверхностей выполняется в процессе выбора формата пикселей, в котором различные совместимые слои информации рендеринга объединяются для формирования кадровый буфер. Примерами таких слоев являются буферы цвета, буферы прозрачности (альфа), буферы трафарета, и буферы глубины. Функция CGL CGLChoosePixelFormat используется для проверки совместимости буфера. 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. программный рендерер. Изначально это был простой целочисленный пакет, в 10.3 был представлен новый пакет с плавающей запятой. который в конечном итоге заменил его. Программный рендерер хоть и медленный, но достаточно быстрый для основных приложений и сохранил функциональность с реализацией OpenGL OS X для целей разработки.

Смотрите также

  • GLX: эквивалент X11 интерфейс к OpenGL
  • WGL: эквивалент Майкрософт Виндоус интерфейс к OpenGL
  • AGL
  • OpenGL
  • GLUT: Интерфейс более высокого уровня, скрывающий различия между WGL, GLX и т. Д.

внешние ссылки