OpenGL: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m →Binding: Modificate informazioni riguardo C++ e C# |
|||
(2 versioni intermedie di 2 utenti non mostrate) | |||
Riga 19:
|Lingua =
}}
'''OpenGL''' ('''Open''' '''G'''raphics '''L'''ibrary) è una specifica che definisce una [[Application programming interface|API]] per più linguaggi e per più piattaforme per scrivere applicazioni che producono [[computer grafica]] 3D. L'interfaccia consiste in circa 250 diverse chiamate di funzione che si possono usare per disegnare complesse scene tridimensionali a partire da semplici primitive. Sviluppato nel 1992 dalla [[Silicon Graphics Inc.]], è ampiamente usato nell'industria dei videogiochi (nella quale compete con [[DirectX]] su [[Microsoft Windows]]), per applicazioni di [[Computer-aided design|CAD]], [[realtà virtuale]], e [[Computer-aided engineering|CAE]]. È lo standard [[de facto]] per la computer grafica 3D in ambiente [[Unix]].
== Specifica ==
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>
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 ====
Riga 219:
In particolare, la libreria OpenGL Performer, sviluppata da SGI e disponibile per [[IRIX]], [[Linux]], e varie versioni di [[Microsoft Windows]], si appoggia a OpenGL per abilitare la creazione di applicazioni di simulazione visuale in [[sistema real-time]].
==
Al fine di imporre le sue caratteristiche multi-linguaggio e multi-piattaforma, vari [[binding]] e [[porting|port]] sono stati sviluppati per OpenGL in molti linguaggi. Tra i più notevoli, la libreria [[Java 3D]] può appoggiarsi su OpenGL per sfruttare l'accelerazione hardware. Molto recentemente, Sun ha pubblicato le versioni beta del sistema JOGL, che fornisce binding ai comandi OpenGL in
Funziona nativamente con [[C++]] e possiede [[Wrapper|wrappers]] per [[C sharp|C#]].
== Funzionalità ad alto livello ==
|