Core OpenGL - Core OpenGL

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