Corso di Programmazione
Grafica e Laboratorio
Introduzione a OpenGL
Prof. Daniele Marini
OpenGL
Cos’è OpenGL
-
La libreria grafica OpenGL è definita come un’interfaccia software per l’hardware
grafico
-
Non è un linguaggio di programmazione
-
E’ una libreria runtime, scritta in C, che fornisce delle funzioni di interfaccia – API
(Application Programming Interfaces) per la creazione di grafica tridimensionale
-
Indipendente dalla piattaforma e dall’hardware
-
Non fornisce funzioni per la gestione di finestre e controlli, I/O e gestione dei file
-
Non esiste un formato per la descrizione dei modelli geometrici in OpenGL
-
E’ pensato per lavorare direttamente con l’hardware grafico ma esistono anche
numerose implementazioni software
Programmazione Grafica aa2007/2008
2
OpenGL
Cos’è OpenGL
-
OpenGL è una macchina a stati
I comandi delle API modificano lo stato corrente al fine di generare l’immagine
Ad esempio, una volta specificato un colore con l’apposito comando, tale colore
sarà utilizzato per tutte le operazioni di disegno finché non sarà specificato un colore
differente
…
glColor3f(1.0f, 0.0f, 0.0f);
glBegin(GL_POLYGON);
glVertex3f(0.25f, 0.25f, 0.0f);
glVertex3f(0.75f, 0.25f, 0.0f);
glVertex3f(0.75f, 0.75f, 0.0f);
glVertex3f(0.25f, 0.75f, 0.0f);
glEnd();
…
Programmazione Grafica aa2007/2008
3
OpenGL
Un po’ di storia
-
-
OpenGL nasce dalle librerie IRIS GL di Silicon Graphics a partire da metà anni ‘80
Originariamente IRIS GL era una libreria grafica 2D che si è poi evoluta poi come API
di programmazione 3D per applicazioni funzionanti su workstations SGI
OpenGL è il risultato degli sforzi di SGI per aumentare la portabilità di IRIS GL
Le nuove API dovevano offrire la potenza di IRIS GL ma essere uno standard aperto,
con il contributo di altri produttori di hardware, per meglio adattare la compatibilità
con altre piattaforme hardware e sistemi operativi
Dalla collaborazione di vari produttori nasce la OpenGL Architecture Review Board
(ARB)
I fondatori sono SGI, Digital Equipment Corporation, IBM, Intel e Microsoft
Il 1 Luglio 1992 viene rilasciata la Versione 1.0 delle specifiche OpenGL
Ora ARB consiste di molti altri membri molti dei produttori di hardware
Programmazione Grafica aa2007/2008
4
Implementazione generica
-
Tutte le operazioni di disegno (rasterizzazione) vengono effettuate via software
Una tale architettura può funzionare su qualsiasi sistema in grado di visualizzare output
grafico
Il sistema di rasterizzazione si appoggia sul Graphics Device Interface (GDI) del sistema
operativo
Programmazione Grafica aa2007/2008
5
Implementazione hardware
-
Il sistema di rasterizzazione di OpenGL si interfaccia con il driver della scheda video
Il driver comunica direttamente con la scheda video senza passare dalla GDI
Tali implementazioni vengono dette hardware accelerated
Programmazione Grafica aa2007/2008
6
Pipeline
-
Con il termine pipeline intendiamo la descrizione di un processo che avviene per passi
successivi
Semplificando molto, la pipeline di esecuzione di un’applicazione che utilizza le librerie
OpenGL può essere schematizzate come segue:
- Il programma esegue delle chiamate alle funzione delle API (comandi)
- Tali comandi vengono salvati in una memoria temporanea (buffer)
- I comandi vengono poi processati a seconda dei dati che trattano e passati quindi
alla fase successiva
- Trasformazione: i dati legati ai vertici della geometria vengono trasformati e
illuminati
- Rasterizzazione: viene generata l’immagine finale in base alle informazioni
legate alla geometria, alle texture, etc…
- L’immagine finale viene salvata nel framebuffer che rappresenta la memoria del
display grafico e mostrata sullo schermo
Programmazione Grafica aa2007/2008
7
Scarica

Introduzione al C-Cpp - Università degli Studi di Milano