Corso di Programmazione Grafica e Laboratorio Daniele Marini Introduzione a OpenGL Corso di Programmazione Grafica e Laboratorio Daniele Marini
OpenGL - 1 Libreria grafica multi-piattaforma Fornisce funzioni per "disegnare" una scena (tridimensionale) in un frame-buffer (porzione di finestra) Assume di avere a disposizione una finestra in cui disegnare
OpenGL – 2 GLU Frame Buffer GL Applicazione GLUT Window System GLX
GLUT - 1 Glut Libreria per la creazione di finestre in cui OpenGL possa disegnare Gestisce l'interazione con l'utente su tali finestre. Non fornisce dispositivi di interazione sofisticati (bottoni, campi di testo, ecc.).
GLUT –2 Includes Interfaccia grafica e librerie GLUT #include <GL/gl.h> // OpenGL decl. #include <GL/glut.h> // GUI funcs Interfaccia grafica e librerie GLUT Descrizione degli oggetti forniti da GLUT Finestre Menu Interazione: Mouse, Tastiera, etc…
Inizializzazione di GLUT - 1 int main(int argc, char *argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB ); glutInitWindowSize(200, 200); glutCreateWindow(“Window Title"); glutReshapeFunc(reshapeFunc); glutDisplayFunc(displayFunc); glutMainLoop(); return 0; }
Inizializzazione di GLUT - 2 Funzioni di Reshape e Display glutReshapeFunc(reshapeFunc); glutDisplayFunc(displayFunc); Reshape Gestisce il ridimensionamento della finestra Display Contiene il codice per la visualizzazione
ReshapeFunc Imposta la viewport Imposta la camera glViewport(0, 0, w, h); Imposta la camera glMatrixMode(GL_PROJECTION); // camera settings glMatrixMode(GL_MODELVIEW);
DisplayFunc Disegna la scena (o chiama le display list) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); // drawing code glFlush(); glutSwapBuffers(); // If double-buffered