OpenGL: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Recupero di 2 fonte/i e segnalazione di 1 link interrotto/i.) #IABot (v2.0.9.5
Riga 38:
* nascondere le capacità offerte dai diversi acceleratori 3D, richiedendo che tutte le implementazioni supportino completamente l'insieme di funzioni OpenGL, ricorrendo ad un'emulazione software se necessario.
 
Il compito di OpenGL è quello di ricevere primitive come punti, linee e poligoni, e di convertirli in pixel (''rasterizing'' o [[rasterizzazione]]). Ciò è realizzato attraverso una [[pipeline grafica]] nota come ''OpenGL state machine''<ref>[{{Cita web |url=https://www.opengl.org/documentation/specs/version1.1/state.pdf |titolo=OpenGL state machine] |accesso=3 maggio 2019 |dataarchivio=22 giugno 2018 |urlarchivio=https://web.archive.org/web/20180622232710/https://www.opengl.org/documentation/specs/version1.1/state.pdf |urlmorto=sì }}</ref>. La maggior parte dei comandi OpenGL forniscono primitive alla pipeline grafica o istruiscono la pipeline su come elaborarle. Prima dell'introduzione di OpenGL 2.0, ogni stadio della pipeline realizzava una funzione fissa ed era configurabile solo entro certi limiti, ma dalla versione 2.0 molti stadi sono totalmente programmabili attraverso il linguaggio [[GLSL]].
 
OpenGL è una API procedurale che opera a basso livello, che richiede al programmatore i passi precisi per disegnare una scena. Questo approccio si pone in contrasto con le API descrittive ad alto livello le quali, operando su [[Albero (grafo)|struttura dati ad albero]] (''scene graph''), richiedono al programmatore solo una descrizione generica della scena, occupandosi dei dettagli più complessi del [[rendering]]. La natura di OpenGL obbliga quindi i programmatori ad avere una buona conoscenza della pipeline grafica stessa, ma al contempo lascia una certa libertà per implementare complessi algoritmi di ''rendering''.
Riga 113:
OpenGL 2 è stato concepito da [[3Dlabs]] per soddisfare le preoccupazioni che OpenGL fosse stagnante e mancasse di una forte direzione.
3Dlabs ha proposto alcune grosse aggiunte allo standard, la più significativa delle quali fu [[GLSL]] (da ''Open'''GL''' '''S'''hading '''L'''anguage'', cioè il linguaggio di shading di OpenGL). Questo consentirebbe ai programmatori di sostituire il codice prefissato di OpenGL per le pipeline di elaborazione dei vertici e dei frammenti con gli shader scritti in un linguaggio simile al [[Linguaggio C|C]]. GLSL era notevole per il fatto di non adeguarsi all'hardware allora disponibile; questo era un ritorno alla tradizione di OpenGL di porsi degli obiettivi ambiziosi e proiettati al futuro per nuovi acceleratori 3D, invece di limitarsi a inseguire lo stato dell'hardware attualmente disponibile.
La specifica finale di OpenGL 2.0<ref>{{Cita web |url=https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf |titolo=Copia archiviata |accesso=3 maggio 2019 |dataarchivio=11 novembre 2019 |urlarchivio=https://web.archive.org/web/20191111182032/https://www.opengl.org/documentation/specs/version2.0/glspec20.pdf |urlmorto=sì }}</ref> comprendeva il supporto a GLSL, ma ometteva molte delle altre caratteristiche originalmente proposte - queste sono state differite a versioni future di OpenGL, sebbene alcune siano già disponibili come estensioni.
 
==== OpenGL 2.0 ====