OpenGL

Fra Wikipedia, den frie encyklopedi
Gå til: navigasjon, søk

OpenGL (Open Graphics Library) er en API-spesifikasjon for utvikling av 2D- og 3D-datagrafikk. Med OpenGL, i likhet med Direct3D, er formålet å skjule kompleksiteten ved å kommunisere med ulike skjermkort. OpenGL er plattformuavhengig og fungerer på blant annet Mac, Linux, Solaris, Windows og Playstation.

OpenGL ble laget av Silicon Graphics i 1992, 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 sjelden brukt i ren 2D grafikk.

OpenGL i Windows[rediger | rediger kilde]

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.

OpenGL-utvidelser[rediger | rediger kilde]

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.

OpenGL i bruk[rediger | rediger kilde]

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 prosedyrebasert, 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 sjelden umulig. Fordelen med OpenGL sin funksjon, er at alt går ut ifra 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.

OpenGL 3.0[rediger | rediger kilde]

OpenGL 3.0 ble annonsert den 9. september 2007 og vil føre til drastiske endringer i OpenGL.

datastubbDenne datarelaterte artikkelen er dessverre kort eller mangelfull, og du kan hjelpe Wikipedia ved å utvide den.

Eksterne lenker[rediger | rediger kilde]