Core OpenGL - Core OpenGL

Core OpenGL nebo CGL je rozhraní okenního systému Macintosh Quartz společnosti Apple Inc. pro implementaci specifikace OpenGL OS X. CGL je analogické GLX , což je rozhraní X11 k OpenGL, a také WGL , což je rozhraní Microsoft Windows k OpenGL.

Dějiny

Všechna rozhraní okenního systému na OpenGL vzešla z migrace proprietárního rozhraní API (3D ) IrisGL pro programování 3D grafické aplikace ( API ) společnosti Silicon Graphics na jeho současný otevřený standardní formát OpenGL. Když bylo rozhodnuto, že se IrisGL stane otevřeným standardem, primární požadovanou změnou designu bylo agnostičnost tohoto grafického standardního okenního systému API. Při přechodu na OpenGL byla proto z IrisGL odstraněna veškerá logika specifická pro okenní systém. Logika okenního systému zahrnuje jakýkoli mechanismus událostí pro shromažďování vstupů ze zařízení, jako jsou klávesnice a myši, a také jakoukoli logiku řazení oken nebo velikostní logiku používanou při kreslení do moderního uživatelského rozhraní s okny. Dále byla z IrisGL odstraněna veškerá interní správa vyrovnávacích pamětí okenních oken, někdy označovaných jako povrchy, aby se vytvořil OpenGL.

S agnostikem okenního systému OpenGL musí společnosti jako Apple nést břemeno konfigurace a správy povrchů používaných jako cíl pro vykreslování OpenGL.

Funkce

Rozhraní okenního systému

V systému OS X je CGL základní vrstvou rozhraní okenního systému pro OpenGL. Oba AGL (Apple Graphics Library) a kakaa (API) (nebo AppKit) mají rozhraní pro OpenGL a je logické softwarové vrstvy a jsou závislé na CGL za jejich chování. CGL a AGL spolupracují volně. CGL a Cocoa lze použít společně, ale třídy Cocoa mohou implicitně provádět změny stavu CGL. Volání funkcí z AGL a kakaa by nemělo být kombinováno.

Konfigurace těchto povrchů se provádí prostřednictvím procesu výběru formátu pixelu, kde se kombinují různé kompatibilní vrstvy informací o vykreslování a vytvářejí framebuffer . Příklady takových vrstev jsou barevné vyrovnávací paměti, průhledné vyrovnávací paměti (alfa), vzorkové vyrovnávací paměti a hloubkové vyrovnávací paměti . K provedení této kontroly kompatibility vyrovnávací paměti se používá funkce CGL CGLChoosePixelFormat . CGLChoosePixelFormat vybere na základě vstupních parametrů a jejich zásad bodování formát pixelu, který představuje kompatibilní konfiguraci vyrovnávací paměti podporovanou podkladovým rendererem, který bude použit ke zpracování grafických příkazů. Renderery mohou být buď hardwarové, takže odpovídají grafickým kartám nainstalovaným v systému, nebo mohou být softwarové, kde hlavní procesor systému zvládá veškeré zpracování grafických příkazů a finální rasterizaci .

Manipulace s heterogenitou systému Mac OS X

V systému Mac OS X je CGL také zodpovědný za zpracování heterogenní povahy instalací a konfigurace grafických zařízení v systémech Macintosh. Počítače Macintosh mohou mít nainstalován libovolný počet displejů a grafických karet. V těchto konfiguracích může být plocha uživatele virtualizována (rozšířena) nebo zrcadlena na více displejů, které jsou připojeny k více grafickým kartám, které mohou, ale nemusí být od stejného dodavatele grafiky.

Ovládání vykreslování

Když uživatelé konfigurují svůj počítač Macintosh tak, aby používal virtualizovanou plochu, a přetahují okna z jednoho displeje na druhý, CGL zpracovává správu grafického stavu OpenGL, který musí být mezi zařízeními stínován, aby mezi nimi byla zajištěna konzistence zpracování příkazů. Přetažení okna přes plochu Macintoshe mezi dvěma různými displeji, které podporují dva různé renderery, se nazývá „změna virtuální obrazovky“.

CGL také poskytuje mechanismus pro získávání informací o rendereru, který se právě používá. Primární datová struktura, která udržuje stav OpenGL v systému Mac OS X, je CGLContextObj . Tyto kontexty CGL lze načíst kdykoli pomocí volání CGLGetCurrentContext . CGLContextObj pak mohou být dotazovány na konkrétní informace o vykreslovacímu modulu, který je spojen s ním.

Softwarový renderer

Součástí je také interní softwarový renderer OpenGL společnosti Apple . Původně se jednalo o jednoduchý celočíselný balíček, v 10.3 byl představen nový s plovoucí desetinnou čárkou, který jej nakonec nahradil . Softwarový renderer, i když je pomalý, je dostatečně rychlý pro základní aplikace a díky vývojové implementaci OS X OpenGL udržuje kompletní funkce .

Viz také

externí odkazy