OpenGL
OpenGL (Open Graphics Library) on laitteistoriippumaton ohjelmointirajapinta interaktiivisen tietokonegrafiikan tuottamiseen. Se koostuu muutamasta sadasta funktiosta, joita voidaan käyttää monimutkaisten kolmiulotteisten mallien tai yksinkertaisten muotojen piirtämiseen. OpenGL on yleinen tietokoneavusteisessa suunnittelussa (CAD) ja muissa visualisoinneissa. OpenGL on myös käytössä videopeliteollisuudessa, jossa se kilpailee Microsoftin Direct3D:n kanssa.
OpenGL on tilakone joka koostuu asiakkaasta (client) ja palvelimesta (server). Asiakas on rakennettu CPU:lla ajettavaan OpenGL-rajapintaan ja palvelin tarkoittaa näytönohjaimen ajurin ohjaamia GPU:n varsinaisia suoritusyksiköitä. Käyttöjärjestelmän OpenGL-pino voi olla näytönohjaimen valmistajan tarjoama (kuten Windowsissa), erillinen komponentti (esimerkiksi Mesa 3D Linuxissa) tai osa käyttöjärjestelmää (OS X).
OpenGL on pelkkä grafiikkakirjasto, eli siltä puuttuu kokonaan esimerkiksi kyky lukea käyttäjän syötettä, hallita ikkunoita, ladata kuvaformaatteja, jne. Näiden asioiden hoitamiseen on tehty useita erillisiä rajapintoja. Näitä ovat mm. GLUT, GLFW, SDL, GLM ja SFML.
Silicon Graphics kehitti ja julkaisi OpenGL:n version 1.0 tammikuussa vuonna 1992 IRIS GL:n korvaajaksi. Tehokkaimmat laitteistotason OpenGL-toteutukset löytyivätkin pitkään SGI:n omista grafiikkatyöasemista. Myöhemmin 3Dlabs vaikutti merkittävästi OpenGL 2.0:aan (2004), joka toi kirjastoon mahdollisuuden käyttää varjostimia (shader), joihin moderni grafiikkaohjelmointi laajalti perustuu (alkeellinen shader-tuki oli olemassa jo OpenGL 1.4:ssä laajennusten kautta). Syyskuussa 2006 OpenGL:n päävastuu siirtyi SGI:ltä Khronos Groupin alaisuuteen.
OpenGL:ää on pidetty hyvin suunniteltuna ja se on pysynyt pitkiä aikoja samanlaisena. Suurimmat muutokset ovat olleet 2.0:n tuoma uusi lähestymistapa ja 3.x-versioissa vanhojen toiminnallisuuksien karsiminen (deprekointi). OpenGL:n tuorein versio, 4.5, julkaistiin 11. elokuuta 2014.
Uusien grafiikkakorttien ominaisuuksiin, joita ei vielä ole sisällytetty OpenGL:ään, pääsee käsiksi OpenGL:n laitteistokohtaisilla laajennuksilla (extensions). Niitä käyttämällä laitteistoriippumattomuus kuitenkin menetetään.
Varjostimet ovat näytönohjaimessa ajettavia ohjelmia jotka mahdollistavat grafiikan manipuloinnin erittäin korkealla suorituskyvyllä. Varjostimia ajetaan useita rinnakkain ja niille voidaan kuljettaa erilaisia parametreja pääohjelmasta. Kulmapistevarjostin muokkaa kulmapisteitä halutuilla laskutoimituksilla ja pikselivarjostin muokkaa rasteroidun pikselin arvoa. OpenGL sisältää GLSL-nimisen (OpenGL Shading Language) varjostinohjelmakielen, joka syntaksiltaan muistuttaa C-ohjelmointikieltä, joskin yksinkertaisempana. Varjostimet kääntyvät "lennossa" OpenGL-ajurilla silloin, kun ne halutaan ottaa käyttöön.
OpenGL ES (Embedded Systems) on sulautetuille järjestelmille räätälöity pelkistetty toteutus OpenGL:stä. Se mahdollistaa yksinkertaisemman näytönohjainpiirin suunnittelun, joka auttaa pienentämään virrankulutusta ja vähentämään laitteen hintaa. OpenGL ES:ää käytetään esimerkiksi älypuhelimissa, tableteissa, kannettavissa pelikoneissa ja monissa muissa kohteissa jossa täysveristä OpenGL-toteutusta ei tarvita. OpenGL ES:lle kirjoitettu koodi on yhteensopivaa tavallisen OpenGL:n kanssa.
OpenGL SC (Safety Critical) on turvakriittisiin järjestelmiin suunnattu versio, joka pohjautuu OpenGL ES:ään. SC-versio sertifioi osan OpenGL ES:stä käytettäväksi DO178-B (ilmailu), ISO-26262 (autoteollisuus) ja ISO 61508 (teollisuusautomaatio) -standardoiduissa kohteissa. SC-versiosta on poistettu ES-version toimintoja, jotka eivät ole yhteensopivia deterministisien turvakriittisten järjestelmien tarpeiden kanssa.