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