OpenGL
Fra Wikipedia, den frie encyklopedi
OpenGL (Open Graphics Library) er en måte å kommunisere med skjermkortet på i likhet med DirectX. Den store forskjellen er at OpenGL fungerer på flere platformer, dvs. Mac, Linux, Solaris, Windows og til og med Playstation-systemene.
OpenGL ble laget av Silicon Graphics i 1991, og står for Open Graphics Library og er basert på et eldre grafikkbibliotek som het IrisGL som var laget av samme selskapet.. OpenGL er ikke en implementasjon, men en spesifikasjon, det vil si at OpenGL i seg selv, er kun en oppskrift på hvordan man skal lage et grafikk API uten noe vekt på om det skal være nødvendig med hardware akselerasjon, eller om det skal kjøre ren software. I tillegg så skal det være like egnet til 2D grafikk, som 3D grafikk, selv om dette ikke er praktisk tilfelle, OpenGL er sjeldent brukt i ren 2D grafikk.
Innhold |
[rediger] OpenGL i Windows
I Windows fram til og med Windows XP, er OpenGL 1.1 implementert i software. Det vil si at hvis OpenGL hardware ikke er tilgjengelig, vil OpenGL kun bruke prosessoren til å tegne grafikk, og kun OpenGL 1.1 funksjoner vil være tilgjengelig. I Windows Vista er OpenGL 1.4 implementert software.
[rediger] OpenGL utvidelser
OpenGL bruker et utvidelsessystem som kalles extensions. Dette muliggjør at OpenGL lett kan utvides med funksjoner som implementasjonen støtter, uten at brukeren trenger å tenke på å oppgradere OpenGL. OpenGL utvidelser begynner med bokstavene GL, deretter fulgt av en understrek, og koden til utvikleren. for nVidia er dett NV, for ATI er dette ATI, og for Architecture Review Board, ARB. Generelt støttede utvidelser får navnet EXT. Et eksempel på dette, kan være utvidelsen
GL_EXT_TEXTURE_3D Denne utvidelsen muliggjør teksturer med tre dimensjoner.
Utvidelser hentes på forskjellig måte i forskjellig operativsystemer. I Windows bruker man en funksjon som heter wglGetProcAddress som henter en peker til en funksjon gitt ved navn, for eksempel
GLTEXIMAGE3DEXTPROC glTexImage3D = (GLTEXIMAGE3DEXTPROC)wglGetProcAddress("glTexImage3DEXT");
Man må alltid sjekke først om utvidelsen er støttet, eneste måten man kan gjøre det på, er å hente ut en tekst som inneholder alle støttede utvidelser, adskilt med mellomrom, med glGetString funksjonen.
char* supported_ext = glGetString(GL_EXTENSIONS);
Deretter må man lete etter utvidelsen i denne teksten.
[rediger] OpenGL i bruk
OpenGL ble før mye brukt til CAD programmer og lignende, selv om dette gjelder i dag også, så har Direct3D fått mye mer innpass her en det hadde tidligere. OpenGL er strengt prosedyre basert, men en halvveis objektorientert form (gjennom vanlige prosedyrer) har blitt mer vanlig i det siste, blant annet med GL_ARB_shader_objects utvidelsen som kom i OpenGL 1.5 OpenGL er et API som er forholdsvis lett å lære seg, det er veldig grunnleggende, noe som gjør at det kreves mye jobb for å lage en effektiv grafikkmotor ved bruk av OpenGL. I motsetning, er Direct3D objektorientert, og alle klasser man trenger følger med. OpenGL krever at brukeren har tilgang til pekere, noe som kan gjøre bruken av teksturer eller Vertex Array kranglete i enkelte språk, dog sjeldent umulig. Fordelen med OpenGL sin funksjon, er at alt går utifra at implementasjonen er skrevet i C, som er støttet av nær sagt alle eksterne språk, som har gjort at såkalte wrappers, eller implementeringer av OpenGL har skjedd i nærmest alle språk, mens Direct3D krever at programmet skrives i enten C++, eller noen av .NET språkene ved bruk av Managed DirectX. Visual Basic 6.0 hadde også et eget Direct3D bibliotek.
[rediger] OpenGL 3.0
OpenGL 3.0 ble annonsert den 9. september 2007 og vil føre til drastiske endringer i OpenGL.

