Core OpenGL - Core OpenGL

Core OpenGL sau CGL este interfața sistemului de fereastră Macintosh Quartz de la Apple Inc. cu implementarea OS X a specificației OpenGL . CGL este similar cu GLX , care este interfața X11 cu OpenGL, precum și cu WGL , care este interfața Microsoft Windows cu OpenGL.

Istorie

Toate interfețele de sistem de fereastră către OpenGL au apărut din migrarea interfeței de programare a aplicației grafice 3D ( API ) IrisGL către Silicon Graphics către actualul său formular deschis deschis OpenGL. Când s-a luat decizia de a face din IrisGL un standard deschis, principala modificare de proiectare necesară a fost de a face acest sistem grafic de ferestre API agnostic. Prin urmare, toată logica specifică sistemului de ferestre a fost eliminată din IrisGL când s-a mutat în OpenGL. Logica sistemului de ferestre include orice mecanism de evenimente pentru colectarea intrărilor de pe dispozitive precum tastaturi și șoareci, precum și orice logică de ordonare sau dimensionare a ferestrelor folosită atunci când se desenează pe o interfață de utilizator modernă cu ferestre. Mai mult, toată gestionarea internă a tampoanelor de memorie a ferestrelor, uneori denumite suprafețe, a fost, de asemenea, eliminată din IrisGL pentru a crea OpenGL.

Cu sistemul de ferestre OpenGL agnostic, companiile precum Apple trebuie să asume sarcina configurării și gestionării suprafețelor utilizate ca destinație pentru redarea OpenGL.

Caracteristici

Interfețe de sisteme de bobinare

Pe OS X, CGL este stratul de bază al interfețelor sistemului de ferestre cu OpenGL. Atât AGL (Apple Graphics Library), cât și Cocoa (API) (sau AppKit) au interfețe către OpenGL și sunt straturi software logice și depind de CGL pentru comportamentul lor. CGL și AGL interoperează liber. CGL și Cacao pot fi utilizate împreună, cu toate acestea clasele de Cacao pot face implicit modificări ale stării CGL. Apelurile funcționale de la AGL și Cocoa nu trebuie amestecate.

Configurarea acestor suprafețe se face printr-un proces de selectare a formatului pixelului în care diferite straturi compatibile de informații de redare sunt combinate pentru a forma un framebuffer . Exemple de astfel de straturi sunt tampoane de culoare, tampoane de transparență (alfa), tampoane de șablon și tampoane de adâncime . Funcția CGL CGLChoosePixelFormat este utilizată pentru a efectua această verificare a compatibilității tamponului. CGLChoosePixelFormat va alege, pe baza parametrilor de intrare și a politicii lor de notare, un format de pixeli care reprezintă o configurație tampon compatibilă care este acceptată de randatorul subiacent care va fi utilizat pentru procesarea comenzilor grafice. Renderele pot fi fie bazate pe hardware, astfel încât să corespundă plăcilor grafice instalate în sistem sau pot fi bazate pe software, unde CPU-ul principal al sistemului gestionează toate procesele de comandă grafică și lucrările de rasterizare finală .

Gestionarea eterogenității Mac OS X

Pe Mac OS X, CGL este, de asemenea, responsabil pentru gestionarea naturii eterogene a instalațiilor și configurării dispozitivelor grafice pe sistemele Macintosh. Computerele Macintosh pot avea instalate în ele orice număr de afișaje și plăci grafice. În aceste configurații, desktopul utilizatorului poate fi virtualizat (extins) sau oglindit pe mai multe afișaje care sunt conectate la mai multe plăci grafice care pot fi sau nu de la același furnizor de grafică.

Controlul redării

Când utilizatorii își configurează Macintosh-ul pentru a utiliza un desktop virtualizat și glisează ferestrele de pe un afișaj pe altul, CGL gestionează starea grafică OpenGL care trebuie umbrită între dispozitive pentru a asigura coerența procesării comenzilor între ele. Tragerea unei ferestre pe un desktop Macintosh între două afișaje diferite care sunt acceptate de două randere diferite este cunoscută sub numele de „Schimbare ecran virtual”.

CGL oferă, de asemenea, un mecanism pentru a obține informații despre randatorul care este utilizat în prezent. Structura primară de date care menține starea OpenGL pe Mac OS X este un CGLContextObj . Aceste contexte CGL pot fi recuperate în orice moment folosind un apel către CGLGetCurrentContext . CGLContextObj poate fi interogate pentru a afla detalii despre care este asociat randarii cu ea.

Render software

De asemenea, este inclus software-ul de redare OpenGL intern al Apple . Inițial, acesta era un pachet întreg întreg, în 10.3 a fost introdus un nou punct cu virgulă mobilă care, în cele din urmă, l-a înlocuit . Renderul software, deși lent, este suficient de rapid pentru aplicațiile de bază și este completat de funcționalități cu implementarea OpenGL a OS X în scopuri de dezvoltare.

Vezi si

  • GLX : interfața X11 echivalentă cu OpenGL
  • WGL : interfața Microsoft Windows echivalentă cu OpenGL
  • AGL
  • OpenGL
  • GLUT : O interfață de nivel superior care ascunde diferențele dintre WGL, GLX etc.

linkuri externe