Come si sa OpenGL non contiene comandi di rendering,
ma è progettato per essere indipendente dal sistema operativo e
dalla gestione delle finestre. Di conseguenza, non contien comandi
per aprire le finestre, o leggere eventi dal mouse o dalla tastiera.
Sfortunatamente, è impossibile scrivere un programma di grafica
completo senza almeno aprire una finestra, e i programmi più utili
richiedono una forma di input da parte dell'utente per operare i
comandi del sistema operativo e del sistema a finestra. In molti
casi, un programma completo crea gli esempi più interessanti, in
questo GLUT semplifica il sistema di gestione delle finestre,
dell'input e così via. Se si possiede una implementazione di GLUT e
OpenGL sul sistema, gli esempi mostrati saranno eseguiti senza
problemi. Inoltre, i comandi di disegno delle OpenGL sono limitati al
disegno di geometrie semplici quali punti, linee e poligoni; GLUT
include alcune routine che permettono di creare oggetti 3D più
complicati quali sfere, toroidi, teiere. In questo modo le immagini
mostrate dai programmi sono rese più interessanti. GLUT può essere
non molto soddisfacente come applicazione, ma può essere un buon
punto di partenza per imparare OpenGL.
Gestione della Finestra
Cinque routine che eseguono i compiti necessari a gestire la finestra.- glutInit(int *argc, char **argv) inizia GLUT e processa ogni argomento di comando (per X, possono esserci opzioni sullo schermo e la geometria). glutInit() deve essere chiamata come prima GLUT routine.
- glutInitDisplayMode(unsigned int modo) specifica se si vuole usare RGBA o modello di colore indicizzato. Si può anche specificare se si vuole finestra a singolo o doppio buffer. (Se si lavora con la mappa dei colori ne si vorrà caricare uno; usare glutSetColor() per farlo.) Infine si può usare la routine per indicare se si vuole una finestra associata ad un tipo di profondità, tratto, buffer di accumulazione. Per esempio si vuole creare una finestra con doppio buffering, e colore RGBA, bisogna chiamare: glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH).
- glutInitWindowPosition(int x, int y) specifica localizzazione nello schermo partendo dall'angolo in lato a sinistra.
- glutInitWindowSize(int larghezza int taglia) specifica larghezza e altezza della finestra.
- int glutCreateWindow(char *stringa) crea la finestra del contesto OpenGL. Restituisce un indicatore unico per la finestra. Avvertenza, sino a quando glutMainLoop() viene chiamato la finestra non è visualizzata.
Le chiamate alla Visualizzazione
glutDisplayFunc(void (*func)(void)) è la prima e la più importante funzione di chiamata alla visualizzazione. Non appena GLUT determina il contesto della finestra che deve essere visualizzata, la chiamata alla funzione registrata mediante glutDisplayFunc() viene eseguita. Pertanto le routines di cui si ha bisogno per ridisegnare la scena nello schermo attraverso il richiamo della funzione.
Se il programma cambia i contenuti della finestra, a volte bisogna richiamare glutPostRedisplay(void), il quale fornisce una scappatoia a glutMainLoop() funzione per essere richiamata mediante questa nuove opportunità.
Eseguire il programma
L'ultima funzione da richiamare è glutMainLoop(void). Tutte le finestre che sono state create vengono mostrare, e il rendering di queste è ora effettivo. Il processo degli eventi comincia ed avviata la registrazione degli eventi a schermo. Una volta entrati nell'anello, non se ne esce.
Nessun commento:
Posta un commento