Sei sulla pagina 1di 89

Introduzione

La libreria GLUT

Sommario
Introduzione a OpenGL Primitive per modellazione Modalita per il rendering ` Lighting Texture Mapping XVR. . .

Obiettivo: essere in grado di scrivere una applicazione (interattiva) con modelli 3D, lighting e texture mapping

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

` Cose OpenGL
Con il termine OpenGL (Open Graphics Library) si intende una specica che denisce una API per piu linguaggi e per piu ` ` piattaforme per scrivere applicazioni che producono computer graca 2D e 3D (http://it.wikipedia.org/wiki/OpenGL)
Open in quanto non legata ad un particolare produttore di

hardware o software
Caratterizzata da unarchitettura client-server Consta di circa 250 istruzioni Facilmente estendibile

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Include les

gl.h glu.h glut.h

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Include les

gl.h glu.h glut.h

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Include les

gl.h glu.h glut.h

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Sintassi delle istruzioni

Sintassi delle istruzioni


Tutte le istruzioni della libreria OpenGL sono caratterizzate

dal presso gl
glClearColor() glLineWidth() glTexImage2D()

Tutti i nomi delle costanti denite sono caratterizzate dal

presso GL , e utilizzano solo lettere maiuscole (C standard)


GL COLOR BUFFER BIT GL MODEL VIEW GL ONE MINUS SRC ALPHA

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Sintassi delle istruzioni

Sintassi delle istruzioni


Tutte le istruzioni della libreria OpenGL sono caratterizzate

dal presso gl
glClearColor() glLineWidth() glTexImage2D()

Tutti i nomi delle costanti denite sono caratterizzate dal

presso GL , e utilizzano solo lettere maiuscole (C standard)


GL COLOR BUFFER BIT GL MODEL VIEW GL ONE MINUS SRC ALPHA

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Sintassi delle istruzioni

Sintassi delle istruzioni


Tutte le istruzioni della libreria OpenGL sono caratterizzate

dal presso gl
glClearColor() glLineWidth() glTexImage2D()

Tutti i nomi delle costanti denite sono caratterizzate dal

presso GL , e utilizzano solo lettere maiuscole (C standard)


GL COLOR BUFFER BIT GL MODEL VIEW GL ONE MINUS SRC ALPHA

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Sintassi delle istruzioni

Sintassi delle istruzioni


Tutte le istruzioni della libreria OpenGL sono caratterizzate

dal presso gl
glClearColor() glLineWidth() glTexImage2D()

Tutti i nomi delle costanti denite sono caratterizzate dal

presso GL , e utilizzano solo lettere maiuscole (C standard)


GL COLOR BUFFER BIT GL MODEL VIEW GL ONE MINUS SRC ALPHA

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Sintassi delle istruzioni

Sintassi delle istruzioni (cont)

glVertex3f(5.0f,10.0f, 0.0f)
gl: Presso di libreria Vertex: Istruzione 3: Numero di parametri dellistruzione f: Tipo dei parametri

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Sintassi delle istruzioni

Sintassi delle istruzioni (cont)

glVertex3f(5.0f,10.0f, 0.0f)
gl: Presso di libreria Vertex: Istruzione 3: Numero di parametri dellistruzione f: Tipo dei parametri

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Sintassi delle istruzioni

Sintassi delle istruzioni (cont)

glVertex3f(5.0f,10.0f, 0.0f)
gl: Presso di libreria Vertex: Istruzione 3: Numero di parametri dellistruzione f: Tipo dei parametri

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Sintassi delle istruzioni

Sintassi delle istruzioni (cont)

glVertex3f(5.0f,10.0f, 0.0f)
gl: Presso di libreria Vertex: Istruzione 3: Numero di parametri dellistruzione f: Tipo dei parametri

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Sintassi delle istruzioni

Sintassi delle istruzioni (cont)

glVertex3f(5.0f,10.0f, 0.0f)
gl: Presso di libreria Vertex: Istruzione 3: Numero di parametri dellistruzione f: Tipo dei parametri

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Tipi di dato

Tipi di dato in OpenGL


` Per assicurare la portabilita su molteplici piattaforme OpenGL ridenisce i tipi fondamentali: sufsso b s i f d ub us ui dimensione 8 bit 16 bit 32 bit 32 bit 64 bit 8 bit 16 bit 32 bit tipo C signed char short int o long oat double unsigned char unsigned short unsigned int, unsigned long tipo OpenGL Glbyte Glshort Glint, Glsizei Gloat, Glclampf Gldouble, Glclampd Glubyte, Glboolean Glushort Gluint, Glenum, Glbiteld

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Tipi di dato

Tipi di dato in OpenGL


` Per assicurare la portabilita su molteplici piattaforme OpenGL ridenisce i tipi fondamentali: sufsso b s i f d ub us ui dimensione 8 bit 16 bit 32 bit 32 bit 64 bit 8 bit 16 bit 32 bit tipo C signed char short int o long oat double unsigned char unsigned short unsigned int, unsigned long tipo OpenGL Glbyte Glshort Glint, Glsizei Gloat, Glclampf Gldouble, Glclampd Glubyte, Glboolean Glushort Gluint, Glenum, Glbiteld

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Tipi di dato

Tipi di dato in OpenGL (cont)

Glbiteld: variabili atte a contenere campi di bit Glenum: variabili enumerative Glclamp: valori oat limitati tra 0.0 e 1.0

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Tipi di dato

Tipi di dato in OpenGL (cont)

Glbiteld: variabili atte a contenere campi di bit Glenum: variabili enumerative Glclamp: valori oat limitati tra 0.0 e 1.0

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Tipi di dato

Tipi di dato in OpenGL (cont)

Glbiteld: variabili atte a contenere campi di bit Glenum: variabili enumerative Glclamp: valori oat limitati tra 0.0 e 1.0

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

GLUT
Libreria aggiuntiva multipiattaforma, sviluppata sopra OpenGL che contiene funzioni per:
Gestione di nestre Gestione di menu pop-up Gestione dellinput da parte dellutente (mouse, joystick. . . ) Gestione modalita video full screen ` Molto altro. . .

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

GLUT
Libreria aggiuntiva multipiattaforma, sviluppata sopra OpenGL che contiene funzioni per:
Gestione di nestre Gestione di menu pop-up Gestione dellinput da parte dellutente (mouse, joystick. . . ) Gestione modalita video full screen ` Molto altro. . .

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

GLUT
Libreria aggiuntiva multipiattaforma, sviluppata sopra OpenGL che contiene funzioni per:
Gestione di nestre Gestione di menu pop-up Gestione dellinput da parte dellutente (mouse, joystick. . . ) Gestione modalita video full screen ` Molto altro. . .

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

GLUT
Libreria aggiuntiva multipiattaforma, sviluppata sopra OpenGL che contiene funzioni per:
Gestione di nestre Gestione di menu pop-up Gestione dellinput da parte dellutente (mouse, joystick. . . ) Gestione modalita video full screen ` Molto altro. . .

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

GLUT
Libreria aggiuntiva multipiattaforma, sviluppata sopra OpenGL che contiene funzioni per:
Gestione di nestre Gestione di menu pop-up Gestione dellinput da parte dellutente (mouse, joystick. . . ) Gestione modalita video full screen ` Molto altro. . .

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

GLUT
Libreria aggiuntiva multipiattaforma, sviluppata sopra OpenGL che contiene funzioni per:
Gestione di nestre Gestione di menu pop-up Gestione dellinput da parte dellutente (mouse, joystick. . . ) Gestione modalita video full screen ` Molto altro. . .

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Funzioni callback

Funzioni callback di GLUT


La libreria Glut premette di strutturare un programma OpenGL mediante la denizione di particolari funzioni dette callback Callback: procedura che viene invocata al vericarsi di un evento:

Ridimensionamento della nestra Refresh dello schermo Input da tastiera Altro. . .

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Funzioni callback

Funzioni callback di GLUT


La libreria Glut premette di strutturare un programma OpenGL mediante la denizione di particolari funzioni dette callback Callback: procedura che viene invocata al vericarsi di un evento:

Ridimensionamento della nestra Refresh dello schermo Input da tastiera Altro. . .

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Funzioni callback

Funzioni callback di GLUT


La libreria Glut premette di strutturare un programma OpenGL mediante la denizione di particolari funzioni dette callback Callback: procedura che viene invocata al vericarsi di un evento:

Ridimensionamento della nestra Refresh dello schermo Input da tastiera Altro. . .

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Funzioni callback

Funzioni callback di GLUT


La libreria Glut premette di strutturare un programma OpenGL mediante la denizione di particolari funzioni dette callback Callback: procedura che viene invocata al vericarsi di un evento:

Ridimensionamento della nestra Refresh dello schermo Input da tastiera Altro. . .

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Funzioni callback

Funzioni callback di GLUT (cont)


Meccanismo di registrazione delle callback: glutDisplayFunc(display); glutIdleFunc(idle); glutKeyboardFunc(keyboard); display, idle e keyboard sono nomi di funzioni specicate

dal programmatore
glutDisplayFunc(), glutIdleFunc() e glutKeyboardFunc()

sono funzioni di GLUT

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Funzioni callback

Funzioni callback di GLUT (cont)


Meccanismo di registrazione delle callback: glutDisplayFunc(display); glutIdleFunc(idle); glutKeyboardFunc(keyboard); display, idle e keyboard sono nomi di funzioni specicate

dal programmatore
glutDisplayFunc(), glutIdleFunc() e glutKeyboardFunc()

sono funzioni di GLUT

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Funzioni callback

Funzioni callback di GLUT (cont)


Meccanismo di registrazione delle callback: glutDisplayFunc(display); glutIdleFunc(idle); glutKeyboardFunc(keyboard); display, idle e keyboard sono nomi di funzioni specicate

dal programmatore
glutDisplayFunc(), glutIdleFunc() e glutKeyboardFunc()

sono funzioni di GLUT

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Funzioni callback

Funzioni callback di GLUT (cont)


Meccanismo di registrazione delle callback: glutDisplayFunc(display); glutIdleFunc(idle); glutKeyboardFunc(keyboard); display, idle e keyboard sono nomi di funzioni specicate

dal programmatore
glutDisplayFunc(), glutIdleFunc() e glutKeyboardFunc()

sono funzioni di GLUT

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Struttura di un programma GLUT


Insieme di istruzioni della libreria OpenGL e GLUT
Creazione e congurazione delle nestre dellapplicativo Inizializzazione dello stato OpenGL Registrazione delle callback GLUT necessarie Rendering, ridimensionamento nestre, input da tastiera o da mouse. . . Entrata nel ciclo principale del programma

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Struttura di un programma GLUT


Insieme di istruzioni della libreria OpenGL e GLUT
Creazione e congurazione delle nestre dellapplicativo Inizializzazione dello stato OpenGL Registrazione delle callback GLUT necessarie Rendering, ridimensionamento nestre, input da tastiera o da mouse. . . Entrata nel ciclo principale del programma

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Struttura di un programma GLUT


Insieme di istruzioni della libreria OpenGL e GLUT
Creazione e congurazione delle nestre dellapplicativo Inizializzazione dello stato OpenGL Registrazione delle callback GLUT necessarie Rendering, ridimensionamento nestre, input da tastiera o da mouse. . . Entrata nel ciclo principale del programma

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Struttura di un programma GLUT


Insieme di istruzioni della libreria OpenGL e GLUT
Creazione e congurazione delle nestre dellapplicativo Inizializzazione dello stato OpenGL Registrazione delle callback GLUT necessarie Rendering, ridimensionamento nestre, input da tastiera o da mouse. . . Entrata nel ciclo principale del programma

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Struttura di un programma GLUT


Insieme di istruzioni della libreria OpenGL e GLUT
Creazione e congurazione delle nestre dellapplicativo Inizializzazione dello stato OpenGL Registrazione delle callback GLUT necessarie Rendering, ridimensionamento nestre, input da tastiera o da mouse. . . Entrata nel ciclo principale del programma

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Creazione e congurazione delle nestre


Compito principalmente assolto da GLUT
void glutInit(int *argc, char **argv) void glutInitDisplayMode(unsigned int mode) void glutInitWindowPosition(int x, int y) void glutInitWindowSize(int w, int h) int glutInitCreateWindow(char *winname)

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Creazione e congurazione delle nestre


Compito principalmente assolto da GLUT
void glutInit(int *argc, char **argv) void glutInitDisplayMode(unsigned int mode) void glutInitWindowPosition(int x, int y) void glutInitWindowSize(int w, int h) int glutInitCreateWindow(char *winname)

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Creazione e congurazione delle nestre


Compito principalmente assolto da GLUT
void glutInit(int *argc, char **argv) void glutInitDisplayMode(unsigned int mode) void glutInitWindowPosition(int x, int y) void glutInitWindowSize(int w, int h) int glutInitCreateWindow(char *winname)

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Creazione e congurazione delle nestre


Compito principalmente assolto da GLUT
void glutInit(int *argc, char **argv) void glutInitDisplayMode(unsigned int mode) void glutInitWindowPosition(int x, int y) void glutInitWindowSize(int w, int h) int glutInitCreateWindow(char *winname)

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Creazione e congurazione delle nestre


Compito principalmente assolto da GLUT
void glutInit(int *argc, char **argv) void glutInitDisplayMode(unsigned int mode) void glutInitWindowPosition(int x, int y) void glutInitWindowSize(int w, int h) int glutInitCreateWindow(char *winname)

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Problemi con i puntatori in C?


http://cslibrary.stanford.edu/104/ Divertente (e utile) lmato esplicativo realizzato alla Stanford University. http:

//pw1.netcom.com/tjensen/ptr/pointers.htm
Tutorial estensivo

http://www.sysprog.net/cpointer.html Tutorial conciso http://www.science.unitn.it/fiorella/

guidac/guidac025.html
Tutorial in italiano dallUniversita di Trento `

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Inizializzazione dello stato OpenGL


OpenGL puo essere vista come una macchina a stati: in `

` ogni momento lo stato puo essere interrogato o modicato attraverso opportune istruzioni Tutti gli attributi di rendering sono memorizzati in tale macchina a stati, tra i quali

` Modalita di rendering Attributi di shading Parametri per lilluminazione Texture mapping Modicatori ambientali

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Inizializzazione dello stato OpenGL


OpenGL puo essere vista come una macchina a stati: in `

` ogni momento lo stato puo essere interrogato o modicato attraverso opportune istruzioni Tutti gli attributi di rendering sono memorizzati in tale macchina a stati, tra i quali

` Modalita di rendering Attributi di shading Parametri per lilluminazione Texture mapping Modicatori ambientali

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Inizializzazione dello stato OpenGL


OpenGL puo essere vista come una macchina a stati: in `

` ogni momento lo stato puo essere interrogato o modicato attraverso opportune istruzioni Tutti gli attributi di rendering sono memorizzati in tale macchina a stati, tra i quali

` Modalita di rendering Attributi di shading Parametri per lilluminazione Texture mapping Modicatori ambientali

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Inizializzazione dello stato OpenGL


OpenGL puo essere vista come una macchina a stati: in `

` ogni momento lo stato puo essere interrogato o modicato attraverso opportune istruzioni Tutti gli attributi di rendering sono memorizzati in tale macchina a stati, tra i quali

` Modalita di rendering Attributi di shading Parametri per lilluminazione Texture mapping Modicatori ambientali

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Inizializzazione dello stato OpenGL


OpenGL puo essere vista come una macchina a stati: in `

` ogni momento lo stato puo essere interrogato o modicato attraverso opportune istruzioni Tutti gli attributi di rendering sono memorizzati in tale macchina a stati, tra i quali

` Modalita di rendering Attributi di shading Parametri per lilluminazione Texture mapping Modicatori ambientali

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Inizializzazione dello stato OpenGL


OpenGL puo essere vista come una macchina a stati: in `

` ogni momento lo stato puo essere interrogato o modicato attraverso opportune istruzioni Tutti gli attributi di rendering sono memorizzati in tale macchina a stati, tra i quali

` Modalita di rendering Attributi di shading Parametri per lilluminazione Texture mapping Modicatori ambientali

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Inizializzazione dello stato OpenGL


OpenGL puo essere vista come una macchina a stati: in `

` ogni momento lo stato puo essere interrogato o modicato attraverso opportune istruzioni Tutti gli attributi di rendering sono memorizzati in tale macchina a stati, tra i quali

` Modalita di rendering Attributi di shading Parametri per lilluminazione Texture mapping Modicatori ambientali

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Interrogazione dello stato OpenGL


istruzioni generiche di interrogazione: glGetBooleanv() glGetDoublev() glGetFloatv() glGetIntegerv() Istruzioni speciche di interrogazione, messe a

disposizione da GLUT:

glutLayerGet(GLenum info) glutDeviceGet(Glenum info) glutGetModiers(void) glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Interrogazione dello stato OpenGL


istruzioni generiche di interrogazione: glGetBooleanv() glGetDoublev() glGetFloatv() glGetIntegerv() Istruzioni speciche di interrogazione, messe a

disposizione da GLUT:

glutLayerGet(GLenum info) glutDeviceGet(Glenum info) glutGetModiers(void) glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Interrogazione dello stato OpenGL


istruzioni generiche di interrogazione: glGetBooleanv() glGetDoublev() glGetFloatv() glGetIntegerv() Istruzioni speciche di interrogazione, messe a

disposizione da GLUT:

glutLayerGet(GLenum info) glutDeviceGet(Glenum info) glutGetModiers(void) glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Interrogazione dello stato OpenGL


istruzioni generiche di interrogazione: glGetBooleanv() glGetDoublev() glGetFloatv() glGetIntegerv() Istruzioni speciche di interrogazione, messe a

disposizione da GLUT:

glutLayerGet(GLenum info) glutDeviceGet(Glenum info) glutGetModiers(void) glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Interrogazione dello stato OpenGL


istruzioni generiche di interrogazione: glGetBooleanv() glGetDoublev() glGetFloatv() glGetIntegerv() Istruzioni speciche di interrogazione, messe a

disposizione da GLUT:

glutLayerGet(GLenum info) glutDeviceGet(Glenum info) glutGetModiers(void) glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Interrogazione dello stato OpenGL


istruzioni generiche di interrogazione: glGetBooleanv() glGetDoublev() glGetFloatv() glGetIntegerv() Istruzioni speciche di interrogazione, messe a

disposizione da GLUT:

glutLayerGet(GLenum info) glutDeviceGet(Glenum info) glutGetModiers(void) glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Interrogazione dello stato OpenGL


istruzioni generiche di interrogazione: glGetBooleanv() glGetDoublev() glGetFloatv() glGetIntegerv() Istruzioni speciche di interrogazione, messe a

disposizione da GLUT:

glutLayerGet(GLenum info) glutDeviceGet(Glenum info) glutGetModiers(void) glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Interrogazione dello stato OpenGL


istruzioni generiche di interrogazione: glGetBooleanv() glGetDoublev() glGetFloatv() glGetIntegerv() Istruzioni speciche di interrogazione, messe a

disposizione da GLUT:

glutLayerGet(GLenum info) glutDeviceGet(Glenum info) glutGetModiers(void) glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Modica dello stato OpenGL


Molti dei parametri memorizzati nella macchina a stati concorrono alla resa nale degli attributi superciali delle primitive visualizzate Istruzioni per modicare i singoli vertici da visualizzare
glColor*() /glIndex*() glNormal*() glTexCoord*()

Istruzioni per modicare la resa generale glPointSize(GLoat size); glLineStipple(GLint repeat, GLushort pattern); glShadeModel(GL SMOOTH); Istruzioni per abilitare opzioni di resa particolari glEnable(GL LIGHTING); glDisable(GL TEXTURE 2D);
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Modica dello stato OpenGL


Molti dei parametri memorizzati nella macchina a stati concorrono alla resa nale degli attributi superciali delle primitive visualizzate Istruzioni per modicare i singoli vertici da visualizzare
glColor*() /glIndex*() glNormal*() glTexCoord*()

Istruzioni per modicare la resa generale glPointSize(GLoat size); glLineStipple(GLint repeat, GLushort pattern); glShadeModel(GL SMOOTH); Istruzioni per abilitare opzioni di resa particolari glEnable(GL LIGHTING); glDisable(GL TEXTURE 2D);
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Modica dello stato OpenGL


Molti dei parametri memorizzati nella macchina a stati concorrono alla resa nale degli attributi superciali delle primitive visualizzate Istruzioni per modicare i singoli vertici da visualizzare
glColor*() /glIndex*() glNormal*() glTexCoord*()

Istruzioni per modicare la resa generale glPointSize(GLoat size); glLineStipple(GLint repeat, GLushort pattern); glShadeModel(GL SMOOTH); Istruzioni per abilitare opzioni di resa particolari glEnable(GL LIGHTING); glDisable(GL TEXTURE 2D);
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Modica dello stato OpenGL


Molti dei parametri memorizzati nella macchina a stati concorrono alla resa nale degli attributi superciali delle primitive visualizzate Istruzioni per modicare i singoli vertici da visualizzare
glColor*() /glIndex*() glNormal*() glTexCoord*()

Istruzioni per modicare la resa generale glPointSize(GLoat size); glLineStipple(GLint repeat, GLushort pattern); glShadeModel(GL SMOOTH); Istruzioni per abilitare opzioni di resa particolari glEnable(GL LIGHTING); glDisable(GL TEXTURE 2D);
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Modica dello stato OpenGL


Molti dei parametri memorizzati nella macchina a stati concorrono alla resa nale degli attributi superciali delle primitive visualizzate Istruzioni per modicare i singoli vertici da visualizzare
glColor*() /glIndex*() glNormal*() glTexCoord*()

Istruzioni per modicare la resa generale glPointSize(GLoat size); glLineStipple(GLint repeat, GLushort pattern); glShadeModel(GL SMOOTH); Istruzioni per abilitare opzioni di resa particolari glEnable(GL LIGHTING); glDisable(GL TEXTURE 2D);
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Modica dello stato OpenGL


Molti dei parametri memorizzati nella macchina a stati concorrono alla resa nale degli attributi superciali delle primitive visualizzate Istruzioni per modicare i singoli vertici da visualizzare
glColor*() /glIndex*() glNormal*() glTexCoord*()

Istruzioni per modicare la resa generale glPointSize(GLoat size); glLineStipple(GLint repeat, GLushort pattern); glShadeModel(GL SMOOTH); Istruzioni per abilitare opzioni di resa particolari glEnable(GL LIGHTING); glDisable(GL TEXTURE 2D);
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Modica dello stato OpenGL


Molti dei parametri memorizzati nella macchina a stati concorrono alla resa nale degli attributi superciali delle primitive visualizzate Istruzioni per modicare i singoli vertici da visualizzare
glColor*() /glIndex*() glNormal*() glTexCoord*()

Istruzioni per modicare la resa generale glPointSize(GLoat size); glLineStipple(GLint repeat, GLushort pattern); glShadeModel(GL SMOOTH); Istruzioni per abilitare opzioni di resa particolari glEnable(GL LIGHTING); glDisable(GL TEXTURE 2D);
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Salvataggio e ripristino dello stato OpenGL

Istruzioni per salvare e ripristinare lo stato: glPushAttrib(GLbiteld mask) glPopAttrib()

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Salvataggio e ripristino dello stato OpenGL

Istruzioni per salvare e ripristinare lo stato: glPushAttrib(GLbiteld mask) glPopAttrib()

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input

Callback di rendering void glutDisplayFunc(void (*func)(void))


Vengono specicate tutte le istruzione per il disegno della

scena void glutPostRedisplay(void) Redisplay dopo aver cambiato il contenuto della nestra

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input

Callback di rendering void glutDisplayFunc(void (*func)(void))


Vengono specicate tutte le istruzione per il disegno della

scena void glutPostRedisplay(void) Redisplay dopo aver cambiato il contenuto della nestra

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input

Callback di rendering void glutDisplayFunc(void (*func)(void))


Vengono specicate tutte le istruzione per il disegno della

scena void glutPostRedisplay(void) Redisplay dopo aver cambiato il contenuto della nestra

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input

Callback di rendering void glutDisplayFunc(void (*func)(void))


Vengono specicate tutte le istruzione per il disegno della

scena void glutPostRedisplay(void) Redisplay dopo aver cambiato il contenuto della nestra

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input

Callback di rendering void glutDisplayFunc(void (*func)(void))


Vengono specicate tutte le istruzione per il disegno della

scena void glutPostRedisplay(void) Redisplay dopo aver cambiato il contenuto della nestra

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input (cont)


Funzioni per la gestione dellinput void glutReshapeFunc(void (*func)(int w, int h))
Callback di ridimensionamento della nestra

void glutKeyboardFunc(void (*func)(unsigned char key, int

w, int h))
Specica la funzione func da eseguire alla pressione del

tasto key void glutMouseFunc(void (*func)(int button, int state, intw,

int h))
Lega lo stato state del bottone del mouse button alla

funzione func void glutMotionFunc(void (*func)(int x, int y)) Specica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input (cont)


Funzioni per la gestione dellinput void glutReshapeFunc(void (*func)(int w, int h))
Callback di ridimensionamento della nestra

void glutKeyboardFunc(void (*func)(unsigned char key, int

w, int h))
Specica la funzione func da eseguire alla pressione del

tasto key void glutMouseFunc(void (*func)(int button, int state, intw,

int h))
Lega lo stato state del bottone del mouse button alla

funzione func void glutMotionFunc(void (*func)(int x, int y)) Specica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input (cont)


Funzioni per la gestione dellinput void glutReshapeFunc(void (*func)(int w, int h))
Callback di ridimensionamento della nestra

void glutKeyboardFunc(void (*func)(unsigned char key, int

w, int h))
Specica la funzione func da eseguire alla pressione del

tasto key void glutMouseFunc(void (*func)(int button, int state, intw,

int h))
Lega lo stato state del bottone del mouse button alla

funzione func void glutMotionFunc(void (*func)(int x, int y)) Specica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input (cont)


Funzioni per la gestione dellinput void glutReshapeFunc(void (*func)(int w, int h))
Callback di ridimensionamento della nestra

void glutKeyboardFunc(void (*func)(unsigned char key, int

w, int h))
Specica la funzione func da eseguire alla pressione del

tasto key void glutMouseFunc(void (*func)(int button, int state, intw,

int h))
Lega lo stato state del bottone del mouse button alla

funzione func void glutMotionFunc(void (*func)(int x, int y)) Specica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input (cont)


Funzioni per la gestione dellinput void glutReshapeFunc(void (*func)(int w, int h))
Callback di ridimensionamento della nestra

void glutKeyboardFunc(void (*func)(unsigned char key, int

w, int h))
Specica la funzione func da eseguire alla pressione del

tasto key void glutMouseFunc(void (*func)(int button, int state, intw,

int h))
Lega lo stato state del bottone del mouse button alla

funzione func void glutMotionFunc(void (*func)(int x, int y)) Specica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input (cont)


Funzioni per la gestione dellinput void glutReshapeFunc(void (*func)(int w, int h))
Callback di ridimensionamento della nestra

void glutKeyboardFunc(void (*func)(unsigned char key, int

w, int h))
Specica la funzione func da eseguire alla pressione del

tasto key void glutMouseFunc(void (*func)(int button, int state, intw,

int h))
Lega lo stato state del bottone del mouse button alla

funzione func void glutMotionFunc(void (*func)(int x, int y)) Specica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input (cont)


Funzioni per la gestione dellinput void glutReshapeFunc(void (*func)(int w, int h))
Callback di ridimensionamento della nestra

void glutKeyboardFunc(void (*func)(unsigned char key, int

w, int h))
Specica la funzione func da eseguire alla pressione del

tasto key void glutMouseFunc(void (*func)(int button, int state, intw,

int h))
Lega lo stato state del bottone del mouse button alla

funzione func void glutMotionFunc(void (*func)(int x, int y)) Specica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input (cont)


Funzioni per la gestione dellinput void glutReshapeFunc(void (*func)(int w, int h))
Callback di ridimensionamento della nestra

void glutKeyboardFunc(void (*func)(unsigned char key, int

w, int h))
Specica la funzione func da eseguire alla pressione del

tasto key void glutMouseFunc(void (*func)(int button, int state, intw,

int h))
Lega lo stato state del bottone del mouse button alla

funzione func void glutMotionFunc(void (*func)(int x, int y)) Specica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Rendering, ridimensionamento nestre, input (cont)


Funzioni per la gestione dellinput void glutReshapeFunc(void (*func)(int w, int h))
Callback di ridimensionamento della nestra

void glutKeyboardFunc(void (*func)(unsigned char key, int

w, int h))
Specica la funzione func da eseguire alla pressione del

tasto key void glutMouseFunc(void (*func)(int button, int state, intw,

int h))
Lega lo stato state del bottone del mouse button alla

funzione func void glutMotionFunc(void (*func)(int x, int y)) Specica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto
Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Entrata nel ciclo principale

void glutMainLoop(void) Ciclo degli eventi principale da chiamare come ultima funzione nel main void glutIdleFunc(void (*func)) Callback richiamata quando il programma e in stato di idle `

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Entrata nel ciclo principale

void glutMainLoop(void) Ciclo degli eventi principale da chiamare come ultima funzione nel main void glutIdleFunc(void (*func)) Callback richiamata quando il programma e in stato di idle `

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Entrata nel ciclo principale

void glutMainLoop(void) Ciclo degli eventi principale da chiamare come ultima funzione nel main void glutIdleFunc(void (*func)) Callback richiamata quando il programma e in stato di idle `

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Struttura di un programma GLUT

Entrata nel ciclo principale

void glutMainLoop(void) Ciclo degli eventi principale da chiamare come ultima funzione nel main void glutIdleFunc(void (*func)) Callback richiamata quando il programma e in stato di idle `

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Esempio di programma con GLUT

Un esempio di programma con GLUT


#include <gl\gl.h> #include <gl\glut.h> int main(void) { glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); glutInitWindowSize(648, 480); glutCreateWindow("Esempio"); init(); glutReshapeFunc(resize); glutDisplayFunc(display); glutKeyboardFunc( key ); glutIdleFunc( idle ); glutMainLoop(); return 0; }

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Esempio di programma con GLUT

Un esempio di programma con GLUT (cont)


void init() { glClearColor(0.0f, 0.0f, 0.0f, 1.0f); } void resize(GLsizei w, GLsizei h) { glViewport(0, 0, w, h); } void display() { glClear(GL\_COLOR\_BUFFER\_BIT); glutSwapBuffers(); }

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Alcuni links utili

Alcuni links utili

http://www.opengl.org/documentation/ Documentazione ufciale su OpenGL http://nehe.gamedev.net/ Ottima raccolta di tutorials su OpenGL http://fly.cc.fer.hr/unreal/theredbook/ OpenGL Red Book

Esercitazioni di OpenGL

Potrebbero piacerti anche