CORSO DI INTERFACCE GRAFICHE (vecchio ordinam.) ================================================ ESERCIZI DI LABORATORIO ================================================ ---------------------------------------------------- Testo dell'esercitazioni di laboratorio Oggetto: OpenGL (1) ---------------------------------------------------- ESERCIZIO 1: primitive e attributi pittorici Partire dal file es1.c e dal relativo makefile - guardare e capire la funzione display che disegna la scena OpenGL - provare a commentare glPushAttrib e glPopAttrib e capire che cosa cambia - provare a cambiare alcuni attributi pittorici: polygon mode, point size, line width, colore emesso dalle primitive - far si' che l'utente possa impostare il point size premendo il tasto "p" seguito da un numero (intero a 1 cifra) che corrisponde alla dimensione di punto voluta: usare la callback Keyboard function di Glut - far si' che l'utente possa impostare il point size premendo il tasto "p" seguito da un numero (intero a 1 cifra) che corrisponde alla dimensione di punto voluta: usare la callback Keyboard function di Glut - provare ad usare altri tipi di primitive: lines, line loop, quads,... ESERCIZIO 2: definizione di primitive - Definire un cubo con baricentro l'origine e lato = 1 (i valori minimi e massimi delle coordinate estreme del cubo sono -0.5 e +0.5). Dare a ciascuna faccia del cubo un colore diverso. Sostituire la scena dell'esercizio precedente con il cubo. Data l'inquadratura, si vedra' una sola faccia del cubo. - Inserire una trasformazione di modellazione che ruota il cubo prima di visualizzarlo. A tale scopo inserire nella funzione display, subito dopo le istruzioni: glMatrixMode(GL_MODELVIEW); glLoadIdentity(); la seguente istruzione: glRotatef(angolo, rx,ry,rz) dove rx,ry,rz esprimono la direzione dell'asse di rotazione e l'angolo e' espresso in gradi. Scegliendo opportunamente asse ed angolo si renderanno visibili altre facce del cubo. ESERCIZIO 3 (facoltativo) Provare a cambiare la trasformazione di proiezione per inquadrare un volume di vista piu' grande. A tale scopo inserire nella funzione display, subito dopo le istruzioni: glMatrixMode(GL_PROJECTION); glLoadIdentity(); la seguente istruzione: glOrtho(xmin,xmax,ymin,ymax,zmin,zmax); dove xmin,xmax,ymin,ymax,zmin,zmax sono le coordinate estreme del volume di vista (per default ora tutti i min sono =-1 e tutti i max sono =1).