Tesi Robotica Analisi, progettazione e implementazione... | Página 185
i
i
“LP_Tesi” — 2013/10/17 — 18:27 — page 185 — #185
i
8.2. IMPLEMENTAZIONE
i
185
della vista con la funzione look(). Viene settato il colore di disegno a bianco e
la posizione del modello in modo che il centro di quest’ultimo venga spostato
nel punto di coordinate (0,0,0).
A questo punto grazie all’implementazione scelta si usa la funzione drawElement
per disegnare una serie di vertici e rispettivi colori, i triangoli verranno disegnati
in base agli indici che sono stato passati, gli indici si riferiscono agli array dei
vertici e dei colori. Infine avendo utilizzato il double buffering si effettua lo swap
lo swap dei frame buffer.
Algoritmo 8.5 Funzione di renderizzazione
1
2
3
4
void display(){
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
camera.look();
5
glColor3f(1.0,1.0,1.0);
glTranslated(-width/2/10,-height/2/10,0.0);
6
7
8
glEnableClientState( GL_VERTEX_ARRAY );
glEnableClientState( GL_COLOR_ARRAY );
glVertexPointer( 3, GL_FLOAT, 0, vertices );
glColorPointer( 3, GL_FLOAT, 0, colors );
glDrawElements(GL_TRIANGLE_STRIP, indices_num, GL_UNSIGNED_INT,
indices);
glDisableClientState( GL_VERTEX_ARRAY );
glDisableClientState( GL_COLOR_ARRAY );
9
10
11
12
13
14
15
16
glutSwapBuffers();
17
18
}
8.2.3
Gestore keyboard
Non resta che mostrare il gestore della tastiera, questa funzione permette di
applicare la disparità e switchare fra le varie viste (Alg:8.6).
Il tutto è gestito con un blocco case che distingue fra i caratteri premuti, si
hanno quindi quattro possibilità:
i
i
i
i