Introduzione a OpenGL

OpenGL è una libreria per grafica interattiva sia 2D che 3D, fornisce una serie di operazioni basilari per il disegno ed ha come punti di forza l’indipendenza dalla piattaforma ed un’alta efficienza. Fra le caratteristiche possiamo trovare:

  • Gestione delle viste ortogonali e prospettiche
  • Illuminazione
  • Texturing
  • Trasparenze
  • Effetti come nebbia, motion blur e messa a fuoco
  • Anti-aliasing

Differenziandosi da altre librerie grafiche, OpenGL si è specializzata in operazioni grafiche di basso livello per massimizzare l’efficienza e la flessibilità.
Esistono versioni per Linux, Windows e Mac, in questa serie di articoli dedicati alle librerie OpenGL svilupperemo in ambiente Windows con il Visual C/C++. Tuttavia va notato che la libreria non è object-oriented ( anche se esistono estensioni in questo senso ) e l’integrazione con il C++ può portare a stili di programmazione non molto puliti.
OpenGL è composto sostanzialmente da tre sotto-librerie:

  • GL ( Graphics Library ) – Il nucleo della libreria grafica, qui vengono fornite le funzioni a basso livello come il tracciamento dei poligoni, l’illuminazione e la gestione dei vari buffer per il disegno.
  • GLU ( OpenGL Utility Library ) – Estensione di GL con una serie di operazioni e primitive di utilità generale, implementate con le funzioni che si trovano in GL, qui si trovano quelle per il posizionamento di una telecamera o la gestione delle superfici NURBS.
  • GLUT ( OpenGL Utility Toolkit ) – Libreria opzionale che fornisce al programmatore la possibilità di avere una gestione di un’interfaccia a finestre svincolata dal sistema operativo. In GLUT si trovano comandi in grado di aprire una finestra, controllarne lo stato, ricevere eventi dal mouse e dalla tastiera, gestire i menu ed in generale tutto quello che si può fare con un normale window manager.

OpenGL si distingue per una sintassi particolare, tutte le funzioni cominciano difatti con il prefisso della loro libreria, quindi gl per la libreria principale, glu per la seconda e glut per la terza. I tipi di dato supportati sono:

Suffisso Tipo Tipo C Tipo OpenGL
b
s
i
f
d
ub
us
ui
Intero 8 bit
Intero 16 bit
Intero 32 bit
Reale 32 bit
Reale 64 bit
Intero no segno 8 bit
Intero no segno 16 bit
Intero no segno 32 bit
signed char
short
int
float
double
unsigned char
unsigned short
unsigned int
GLbyte
GLshort
GLint
GLfloat
GLdouble
GLubyte
GLushort
GLuint

Quasi tutte le funzioni che hanno parametri terminano con i tipi di dato dell’argomento, per esempio glVertex3fv significa che la funzione fa parte della libreria GL e le coordinate saranno 3 di tipo float e saranno un vettore. Un altro aspetto peculiare di OpenGL è la sua impostazione come macchina a stati, difatti alcuni parametri come il colore possono essere attivati o disattivati. La funzione glColor3f serve per specificare un colore, fino a quando non sarà impostato un altro o verrà disabilitato, tutte le primitive grafiche saranno disegnate con quel colore.
Per ora abbiamo introdotto le basi teoriche sulle librerie OpenGL, ma dal prossimo articolo utilizzeremo le librerie GLUT per creare una finestra che risulterà sempre utile per provare i vari listati per prendere padronanza con queste librerie grafiche.

Lezione Successiva >>

Di Giampaolo Rossi

Sviluppatore software da oltre 16 anni.

2 commenti

  1. Salve, volevo chiedervi prima di iniziare a leggere le vostre dispende sulle opengl, quale editor dovrei utilizzare, quale consigliate.
    Grazie

I commenti sono chiusi.