Rdzeń OpenGL — Core OpenGL

Core OpenGL lub CGL to interfejs systemu okienkowego Macintosh Quartz firmy Apple Inc. do implementacji specyfikacji OpenGL w OS X. CGL jest analogiczny do GLX , który jest interfejsem X11 do OpenGL, a także WGL , który jest interfejsem Microsoft Windows do OpenGL.

Historia

Wszystkie interfejsy systemu okienkowego do OpenGL powstały w wyniku migracji zastrzeżonego przez Silicon Graphics graficznego interfejsu programowania aplikacji ( API ) 3D IrisGL do jego obecnego otwartego standardu OpenGL. Kiedy podjęto decyzję o uczynieniu IrisGL otwartym standardem, podstawową wymaganą zmianą projektową było uczynienie tego standardu graficznego niezależnym od systemu okienkowego interfejsu API. Dlatego cała logika systemu okienkowego została usunięta z IrisGL po przejściu na OpenGL. Logika systemu okienkowego obejmuje dowolny mechanizm zdarzeń do zbierania danych wejściowych z urządzeń, takich jak klawiatury i myszy, a także dowolną logikę porządkowania lub rozmiaru okien używaną podczas rysowania w nowoczesnym interfejsie użytkownika z oknami. Co więcej, całe wewnętrzne zarządzanie buforami pamięci okien, czasami nazywane powierzchniami, zostało również usunięte z IrisGL, aby utworzyć OpenGL.

Dzięki niezależnemu od systemu okienkowego OpenGL firmy takie jak Apple muszą wziąć na siebie ciężar konfigurowania i zarządzania powierzchniami używanymi jako miejsce docelowe renderowania OpenGL.

Cechy

Interfejsy systemu okienkowego

W systemie OS X CGL jest podstawową warstwą interfejsów systemu okienkowego dla OpenGL. Zarówno AGL (Apple Graphics Library), jak i Cocoa (API) (lub AppKit) mają interfejsy do OpenGL i są logicznymi warstwami oprogramowania, a ich zachowanie zależy od CGL. CGL i AGL współpracują swobodnie. CGL i Cocoa mogą być używane razem, jednak klasy Cocoa mogą niejawnie wprowadzać zmiany w stanie CGL. Wywołania funkcji z AGL i Cocoa nie powinny być mieszane.

Konfiguracja tych powierzchni odbywa się poprzez proces wyboru formatu pikseli, w którym różne kompatybilne warstwy informacji renderowania są łączone w celu utworzenia bufora ramki . Przykładami takich warstw są bufory kolorów, bufory przezroczystości (alfa), bufory szablonów i bufory głębi . Funkcja CGL CGLChoosePixelFormat służy do sprawdzania zgodności bufora. CGLChoosePixelFormat na podstawie parametrów wejściowych i ich zasad oceniania wybierze format pikseli, który reprezentuje zgodną konfigurację buforu, która jest obsługiwana przez podstawowy moduł renderujący, który będzie używany do przetwarzania poleceń graficznych. Renderery mogą być albo oparte na sprzęcie, tak aby odpowiadały kartom graficznym zainstalowanym w systemie, albo mogą być oparte na oprogramowaniu, gdzie główny procesor systemu obsługuje całe przetwarzanie poleceń graficznych i końcową pracę rasteryzacji .

Obsługa heterogeniczności systemu Mac OS X

W systemie Mac OS X CGL odpowiada również za obsługę niejednorodnej natury instalacji i konfiguracji urządzeń graficznych w systemach Macintosh. W komputerach Macintosh może być zainstalowana dowolna liczba wyświetlaczy i kart graficznych. W tych konfiguracjach pulpit użytkownika może być zwirtualizowany (rozszerzony) lub odzwierciedlony na wielu wyświetlaczach podłączonych do wielu kart graficznych, które mogą pochodzić od tego samego dostawcy grafiki lub nie.

Kontrolowanie renderowania

Gdy użytkownicy konfigurują swoje komputery Macintosh do korzystania ze zwirtualizowanego pulpitu i przeciągają okna z jednego ekranu na drugi, CGL obsługuje zarządzanie stanem grafiki OpenGL, który musi być cień między urządzeniami, aby zapewnić spójność przetwarzania poleceń między nimi. Przeciąganie okna po pulpicie Macintosha między dwoma różnymi ekranami obsługiwanymi przez dwa różne renderery jest nazywane „wirtualną zmianą ekranu”.

CGL udostępnia również mechanizm uzyskiwania informacji o aktualnie używanym module renderującym. Podstawowa struktura danych, która utrzymuje stan OpenGL w systemie Mac OS X, to CGLContextObj . Te konteksty CGL można pobrać w dowolnym momencie przy użyciu wywołania CGLGetCurrentContext . CGLContextObj można następnie zapytany o szczegółach o renderujący, który jest związany z nim.

Renderowanie oprogramowania

W zestawie znajduje się również autorski renderer oprogramowania OpenGL firmy Apple . Pierwotnie był to prosty pakiet całkowitoliczbowy, w 10.3 wprowadzono nowy zmiennoprzecinkowy, który ostatecznie go zastąpił . Renderer oprogramowania, choć powolny, jest wystarczająco szybki dla podstawowych aplikacji i zachowuje pełną funkcjonalność dzięki implementacji OpenGL systemu OS X do celów programistycznych.

Zobacz też

Zewnętrzne linki