Core OpenGL - Core OpenGL
| macOS grafikmodel |
|---|
| Gengivelse |
| Sammensætning |
Core OpenGL , eller CGL , er Apple Inc. 's Macintosh Quartz -vinduesystem -interface til OS X -implementeringen af OpenGL -specifikationen. CGL er analog med GLX , som er X11 -grænsefladen til OpenGL, samt WGL , som er Microsoft Windows -grænsefladen til OpenGL.
Historie
Alle vinduessystemgrænseflader til OpenGL opstod ved migrering af Silicon Graphics proprietære 3D -grafikprogrammeringsgrænseflade ( API ) IrisGL til den nuværende åbne standardform OpenGL. Da beslutningen blev taget om at gøre IrisGL til en åben standard, var den primære påkrævede designændring at gøre dette grafikstandard API -vinduesystem agnostisk. Al vinduesystemspecifik logik blev derfor fjernet fra IrisGL, når man flyttede til OpenGL. Vinduesystemlogik inkluderer enhver hændelsesmekanisme til indsamling af input fra enheder såsom tastaturer og mus, samt enhver vinduesbestilling eller dimensionering af logik, der bruges, når der tegnes til en moderne vinduesgrænseflade med vinduer. Al intern administration af vindueshukommelsesbuffere, undertiden benævnt overflader, blev også fjernet fra IrisGL for at oprette OpenGL.
Med OpenGL vinduesystem agnostiker skal virksomheder som Apple bære byrden ved at konfigurere og administrere de overflader, der bruges som destination for OpenGL -gengivelse.
Funktioner
Vinduessystem grænseflader
På OS X er CGL grundlaget for vinduessystemgrænseflader til OpenGL. Både AGL (Apple Graphics Library) og Cocoa (API) (eller AppKit) har grænseflader til OpenGL og er logiske softwarelag og afhænger af CGL for deres adfærd. CGL og AGL fungerer frit. CGL og kakao kan bruges sammen, men kakaoklasser kan implicit foretage ændringer i CGL -tilstand. Funktionsopkald fra AGL og kakao bør ikke blandes.
Konfiguration af disse overflader sker gennem en pixelformatvalgsproces, hvor forskellige kompatible lag af gengivelsesinformation kombineres til en rammebuffer . Eksempler på sådanne lag er farvebuffere, gennemsigtighedsbuffere (alfa), stencilbuffere og dybdebuffere . CGL -funktionen CGLChoosePixelFormat bruges til at udføre denne bufferkompatibilitetskontrol. CGLChoosePixelFormat vil baseret på inputparametre og deres scoringspolitik vælge et pixelformat, der repræsenterer en kompatibel bufferkonfiguration, der understøttes af den underliggende renderer, der vil blive brugt til at behandle grafikkommandoer. Renderers kan enten være hardware -baserede, således at de svarer til grafikkort installeret i systemet, eller de kan være software -baserede, hvor systemets hoved -CPU håndterer al grafikkommando -behandling og sidste rasteriseringsarbejde .
Håndtering af Mac OS X -heterogenitet
På Mac OS X er CGL også ansvarlig for håndteringen af den heterogene karakter af grafiske enhedsinstallationer og konfiguration på Macintosh -systemer. Macintosh -computere kan have et hvilket som helst antal skærme og grafikkort installeret i dem. I disse konfigurationer kan brugerens skrivebord virtualiseres (udvides) eller spejles på tværs af flere skærme, der er forbundet til flere grafikkort, som muligvis er fra den samme grafikleverandør.
Kontrol af gengivelsen
Når brugere konfigurerer deres Macintosh til at bruge et virtualiseret skrivebord, og de trækker vinduer fra en skærm til en anden, håndterer CGL administrationen af OpenGL -grafikstatus, der skal skygges mellem enheder for at give kommandobehandlingskonsistens mellem dem. At trække et vindue hen over et Macintosh -skrivebord mellem to forskellige skærme, der understøttes af to forskellige gengivere, kaldes en "Virtual Screen Change".
CGL giver også en mekanisme til at indhente oplysninger om rendereren, der i øjeblikket er i brug. Den primære datastruktur, der opretholder OpenGL -tilstand på Mac OS X, er en CGLContextObj . Disse CGL -kontekster kan til enhver tid hentes ved hjælp af et opkald til CGLGetCurrentContext . Den CGLContextObj kan derefter forespørges for specifikke oplysninger om renderer, der er forbundet med det.
Software renderer
Også inkluderet er Apples interne OpenGL- software-renderer . Oprindeligt var dette en simpel heltalspakke, i 10.3 blev der introduceret et nyt flydende punkt, som i sidste ende erstattede det . Softwarerendereren, selvom den er langsom, er hurtig nok til grundlæggende applikationer og holdes komplet med OS X's OpenGL-implementering til udviklingsformål.
Se også
- GLX : den tilsvarende X11 -grænseflade til OpenGL
- WGL : den tilsvarende Microsoft Windows -grænseflade til OpenGL
- AGL
- OpenGL
- GLUT : En grænseflade på højere niveau, der skjuler forskellene mellem WGL, GLX osv.
eksterne links
- CGL -referencevejledning på Apples websted (html). - Arkiveret 12. august 2014 på Wayback Machine
- CGL -referencevejledning på Apples websted (PDF). - Arkiveret 24. august 2014 på Wayback Machine