Jump to content

Ядро OpenGL

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 для целей разработки.

См. также

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 9a9f873572dfb8c274cd50e2f8b0ef3f__1715914860
URL1:https://arc.ask3.ru/arc/aa/9a/3f/9a9f873572dfb8c274cd50e2f8b0ef3f.html
Заголовок, (Title) документа по адресу, URL1:
Core OpenGL - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)