Sei sulla pagina 1di 89

Introduzione

Sommario

Introduzione a OpenGL

Primitive per modellazione

Modalita` per il rendering

Lighting

Texture Mapping

La libreria GLUT

Lighting • Texture Mapping • La libreria GLUT Obiettivo: essere in grado di scrivere una applicazione

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

Esercitazioni di OpenGL

Introduzione

Cos’e` OpenGL

La libreria GLUT

Introduzione Cos’e` OpenGL La libreria GLUT Con il termine OpenGL (Open Graphics Library) si intende una

Con il termine OpenGL (Open Graphics Library) si intende una specifica che definisce una API per piu` linguaggi e per piu` piattaforme per scrivere applicazioni che producono computer grafica 2D e 3D (http://it.wikipedia.org/wiki/OpenGL)

Open in quanto non legata ad un particolare produttore di hardware o software

Caratterizzata da un’architettura client-server

Consta di circa 250 istruzioni

Facilmente estendibile

Esercitazioni di OpenGL

Introduzione

Include files

gl.h

glu.h

glut.h

Esercitazioni di OpenGL

La libreria GLUT

Introduzione Include files • gl.h • glu.h • glut.h Esercitazioni di OpenGL La libreria GLUT

Introduzione

Include files

gl.h

glu.h

glut.h

Esercitazioni di OpenGL

La libreria GLUT

Introduzione Include files • gl.h • glu.h • glut.h Esercitazioni di OpenGL La libreria GLUT

Introduzione

Include files

gl.h

glu.h

glut.h

Esercitazioni di OpenGL

La libreria GLUT

Introduzione Include files • gl.h • glu.h • glut.h Esercitazioni di OpenGL La libreria GLUT

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Sintassi delle istruzioni

Sintassi delle istruzioni

Sintassi delle istruzioni

Tutte le istruzioni della libreria OpenGL sono caratterizzate dal prefisso gl

glClearColor()

glLineWidth()

glTexImage2D()

Tutti i nomi delle costanti definite sono caratterizzate dal prefisso 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

Introduzione La libreria GLUT Sintassi delle istruzioni

Sintassi delle istruzioni

Sintassi delle istruzioni

Tutte le istruzioni della libreria OpenGL sono caratterizzate dal prefisso gl

glClearColor()

glLineWidth()

glTexImage2D()

Tutti i nomi delle costanti definite sono caratterizzate dal prefisso 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

Introduzione La libreria GLUT Sintassi delle istruzioni

Sintassi delle istruzioni

Sintassi delle istruzioni

Tutte le istruzioni della libreria OpenGL sono caratterizzate dal prefisso gl

glClearColor()

glLineWidth()

glTexImage2D()

Tutti i nomi delle costanti definite sono caratterizzate dal prefisso 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

Introduzione La libreria GLUT Sintassi delle istruzioni

Sintassi delle istruzioni

Sintassi delle istruzioni

Tutte le istruzioni della libreria OpenGL sono caratterizzate dal prefisso gl

glClearColor()

glLineWidth()

glTexImage2D()

Tutti i nomi delle costanti definite sono caratterizzate dal prefisso 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

Introduzione La libreria GLUT Sintassi delle istruzioni

Sintassi delle istruzioni

Sintassi delle istruzioni (cont)

glVertex3f(5.0f,10.0f, 0.0f)

gl: Prefisso di libreria

Vertex: Istruzione

3: Numero di parametri dell’istruzione

f: Tipo dei parametri

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Sintassi delle istruzioni

Sintassi delle istruzioni

Sintassi delle istruzioni (cont)

glVertex3f(5.0f,10.0f, 0.0f)

gl: Prefisso di libreria

Vertex: Istruzione

3: Numero di parametri dell’istruzione

f: Tipo dei parametri

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Sintassi delle istruzioni

Sintassi delle istruzioni

Sintassi delle istruzioni (cont)

glVertex3f(5.0f,10.0f, 0.0f)

gl: Prefisso di libreria

Vertex: Istruzione

3: Numero di parametri dell’istruzione

f: Tipo dei parametri

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Sintassi delle istruzioni

Sintassi delle istruzioni

Sintassi delle istruzioni (cont)

glVertex3f(5.0f,10.0f, 0.0f)

gl: Prefisso di libreria

Vertex: Istruzione

3: Numero di parametri dell’istruzione f: Tipo dei parametri

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Sintassi delle istruzioni

Sintassi delle istruzioni

Sintassi delle istruzioni (cont)

glVertex3f(5.0f,10.0f, 0.0f)

gl: Prefisso di libreria

Vertex: Istruzione

3: Numero di parametri dell’istruzione

f: Tipo dei parametri

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Tipi di dato

Tipi di dato

Tipi di dato in OpenGL

Per assicurare la portabilita` su molteplici piattaforme OpenGL ridefinisce i tipi fondamentali:

suffisso

dimensione

tipo C

tipo OpenGL

b

8

bit

signed char

Glbyte

s

16

bit

short

Glshort

i

32

bit

int o long

Glint, Glsizei

f

32

bit

float

Glfloat, Glclampf

d

64

bit

double

Gldouble, Glclampd

ub

8

bit

unsigned char

Glubyte, Glboolean

us

16

bit

unsigned short

Glushort

ui

32

bit

unsigned int,

Gluint, Glenum,

 

unsigned long

Glbitfield

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Tipi di dato

Tipi di dato

Tipi di dato in OpenGL

Per assicurare la portabilita` su molteplici piattaforme OpenGL ridefinisce i tipi fondamentali:

suffisso

dimensione

tipo C

tipo OpenGL

b

8

bit

signed char

Glbyte

s

16

bit

short

Glshort

i

32

bit

int o long

Glint, Glsizei

f

32

bit

float

Glfloat, Glclampf

d

64

bit

double

Gldouble, Glclampd

ub

8

bit

unsigned char

Glubyte, Glboolean

us

16

bit

unsigned short

Glushort

ui

32

bit

unsigned int,

Gluint, Glenum,

 

unsigned long

Glbitfield

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Tipi di dato

Tipi di dato

Tipi di dato in OpenGL (cont)

Glbitfield: variabili atte a contenere campi di bit

Glenum: variabili enumerative

Glclamp: valori float limitati tra 0.0 e 1.0

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Tipi di dato

Tipi di dato

Tipi di dato in OpenGL (cont)

Glbitfield: variabili atte a contenere campi di bit

Glenum: variabili enumerative Glclamp: valori float limitati tra 0.0 e 1.0

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Tipi di dato

Tipi di dato

Tipi di dato in OpenGL (cont)

Glbitfield: variabili atte a contenere campi di bit

Glenum: variabili enumerative

Glclamp: valori float limitati tra 0.0 e 1.0

Esercitazioni di OpenGL

Introduzione

GLUT

La libreria GLUT

Introduzione GLUT La libreria GLUT Libreria aggiuntiva multipiattaforma, sviluppata “sopra” OpenGL che contiene

Libreria aggiuntiva multipiattaforma, sviluppata “sopra” OpenGL che contiene funzioni per:

Gestione di finestre

Gestione di menu pop-up

Gestione dell’input da parte dell’utente (mouse,

Gestione modalita` video full screen

Molto

Esercitazioni di OpenGL

)

Introduzione

GLUT

La libreria GLUT

Introduzione GLUT La libreria GLUT Libreria aggiuntiva multipiattaforma, sviluppata “sopra” OpenGL che contiene

Libreria aggiuntiva multipiattaforma, sviluppata “sopra” OpenGL che contiene funzioni per:

Gestione di finestre

Gestione di menu pop-up

Gestione dell’input da parte dell’utente (mouse,

Gestione modalita` video full screen

Molto

Esercitazioni di OpenGL

)

Introduzione

GLUT

La libreria GLUT

Introduzione GLUT La libreria GLUT Libreria aggiuntiva multipiattaforma, sviluppata “sopra” OpenGL che contiene

Libreria aggiuntiva multipiattaforma, sviluppata “sopra” OpenGL che contiene funzioni per:

Gestione di finestre

Gestione di menu pop-up

Gestione dell’input da parte dell’utente (mouse,

Gestione modalita` video full screen

Molto

Esercitazioni di OpenGL

)

Introduzione

GLUT

La libreria GLUT

Introduzione GLUT La libreria GLUT Libreria aggiuntiva multipiattaforma, sviluppata “sopra” OpenGL che contiene

Libreria aggiuntiva multipiattaforma, sviluppata “sopra” OpenGL che contiene funzioni per:

Gestione di finestre

Gestione di menu pop-up

Gestione dell’input da parte dell’utente (mouse,

Gestione modalita` video full screen

Molto

Esercitazioni di OpenGL

)

Introduzione

GLUT

La libreria GLUT

Introduzione GLUT La libreria GLUT Libreria aggiuntiva multipiattaforma, sviluppata “sopra” OpenGL che contiene

Libreria aggiuntiva multipiattaforma, sviluppata “sopra” OpenGL che contiene funzioni per:

Gestione di finestre

Gestione di menu pop-up

Gestione dell’input da parte dell’utente (mouse,

Gestione modalita` video full screen

Molto

Esercitazioni di OpenGL

)

Introduzione

GLUT

La libreria GLUT

Introduzione GLUT La libreria GLUT Libreria aggiuntiva multipiattaforma, sviluppata “sopra” OpenGL che contiene

Libreria aggiuntiva multipiattaforma, sviluppata “sopra” OpenGL che contiene funzioni per:

Gestione di finestre

Gestione di menu pop-up

Gestione dell’input da parte dell’utente (mouse,

Gestione modalita` video full screen

Molto

Esercitazioni di OpenGL

)

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Funzioni callback

Funzioni callback

Funzioni callback di GLUT

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

Ridimensionamento della finestra

Refresh dello schermo

Input da tastiera

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Funzioni callback

Funzioni callback

Funzioni callback di GLUT

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

Ridimensionamento della finestra

Refresh dello schermo

Input da tastiera

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Funzioni callback

Funzioni callback

Funzioni callback di GLUT

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

Ridimensionamento della finestra

Refresh dello schermo

Input da tastiera

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Funzioni callback

Funzioni callback

Funzioni callback di GLUT

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

Ridimensionamento della finestra

Refresh dello schermo

Input da tastiera

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Funzioni callback

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 specificate dal programmatore

glutDisplayFunc(), glutIdleFunc() e glutKeyboardFunc() sono funzioni di GLUT

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Funzioni callback

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 specificate dal programmatore

glutDisplayFunc(), glutIdleFunc() e glutKeyboardFunc() sono funzioni di GLUT

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Funzioni callback

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 specificate dal programmatore

glutDisplayFunc(), glutIdleFunc() e glutKeyboardFunc() sono funzioni di GLUT

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Funzioni callback

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 specificate dal programmatore

glutDisplayFunc(), glutIdleFunc() e glutKeyboardFunc() sono funzioni di GLUT

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Struttura di un programma GLUT Struttura di un programma GLUT Insieme di

Struttura di un programma GLUT

Struttura di un programma GLUT

Insieme di istruzioni della libreria OpenGL e GLUT

Creazione e configurazione delle finestre dell’applicativo

Inizializzazione dello stato OpenGL

Registrazione delle callback GLUT necessarie

Rendering, ridimensionamento finestre, input da tastiera o da

Entrata nel ciclo principale del programma

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Struttura di un programma GLUT Struttura di un programma GLUT Insieme di

Struttura di un programma GLUT

Struttura di un programma GLUT

Insieme di istruzioni della libreria OpenGL e GLUT

Creazione e configurazione delle finestre dell’applicativo

Inizializzazione dello stato OpenGL

Registrazione delle callback GLUT necessarie

Rendering, ridimensionamento finestre, input da tastiera o da

Entrata nel ciclo principale del programma

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Struttura di un programma GLUT Struttura di un programma GLUT Insieme di

Struttura di un programma GLUT

Struttura di un programma GLUT

Insieme di istruzioni della libreria OpenGL e GLUT

Creazione e configurazione delle finestre dell’applicativo

Inizializzazione dello stato OpenGL

Registrazione delle callback GLUT necessarie

Rendering, ridimensionamento finestre, input da tastiera o da

Entrata nel ciclo principale del programma

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Struttura di un programma GLUT Struttura di un programma GLUT Insieme di

Struttura di un programma GLUT

Struttura di un programma GLUT

Insieme di istruzioni della libreria OpenGL e GLUT

Creazione e configurazione delle finestre dell’applicativo

Inizializzazione dello stato OpenGL

Registrazione delle callback GLUT necessarie

Rendering, ridimensionamento finestre, input da tastiera o da

Entrata nel ciclo principale del programma

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Struttura di un programma GLUT Struttura di un programma GLUT Insieme di

Struttura di un programma GLUT

Struttura di un programma GLUT

Insieme di istruzioni della libreria OpenGL e GLUT

Creazione e configurazione delle finestre dell’applicativo

Inizializzazione dello stato OpenGL

Registrazione delle callback GLUT necessarie

Rendering, ridimensionamento finestre, input da tastiera o da

Entrata nel ciclo principale del programma

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Struttura di un programma GLUT Creazione e configurazione delle finestre Compito

Struttura di un programma GLUT

Creazione e configurazione delle finestre

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

Introduzione La libreria GLUT Struttura di un programma GLUT Creazione e configurazione delle finestre Compito

Struttura di un programma GLUT

Creazione e configurazione delle finestre

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

Introduzione La libreria GLUT Struttura di un programma GLUT Creazione e configurazione delle finestre Compito

Struttura di un programma GLUT

Creazione e configurazione delle finestre

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

Introduzione La libreria GLUT Struttura di un programma GLUT Creazione e configurazione delle finestre Compito

Struttura di un programma GLUT

Creazione e configurazione delle finestre

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

Introduzione La libreria GLUT Struttura di un programma GLUT Creazione e configurazione delle finestre Compito

Struttura di un programma GLUT

Creazione e configurazione delle finestre

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

Struttura di un programma GLUT

Problemi con i puntatori in C?

La libreria GLUT

GLUT Problemi con i puntatori in C? La libreria GLUT • http://cslibrary.stanford.edu/104/ • Divertente (e

Divertente (e utile) filmato esplicativo realizzato alla Stanford University.

http:

Tutorial estensivo

Tutorial conciso

Tutorial in italiano dall’Universita` di Trento

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Inizializzazione dello stato OpenGL • OpenGL puo`

Inizializzazione dello stato OpenGL

OpenGL puo` essere vista come una macchina a stati: in ogni momento lo stato puo` essere interrogato o modificato 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 l’illuminazione

Texture mapping

Modificatori ambientali

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Inizializzazione dello stato OpenGL • OpenGL puo`

Inizializzazione dello stato OpenGL

OpenGL puo` essere vista come una macchina a stati: in ogni momento lo stato puo` essere interrogato o modificato 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 l’illuminazione

Texture mapping

Modificatori ambientali

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Inizializzazione dello stato OpenGL • OpenGL puo`

Inizializzazione dello stato OpenGL

OpenGL puo` essere vista come una macchina a stati: in ogni momento lo stato puo` essere interrogato o modificato 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 l’illuminazione

Texture mapping

Modificatori ambientali

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Inizializzazione dello stato OpenGL • OpenGL puo`

Inizializzazione dello stato OpenGL

OpenGL puo` essere vista come una macchina a stati: in ogni momento lo stato puo` essere interrogato o modificato 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 l’illuminazione

Texture mapping

Modificatori ambientali

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Inizializzazione dello stato OpenGL • OpenGL puo`

Inizializzazione dello stato OpenGL

OpenGL puo` essere vista come una macchina a stati: in ogni momento lo stato puo` essere interrogato o modificato 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 l’illuminazione

Texture mapping

Modificatori ambientali

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Inizializzazione dello stato OpenGL • OpenGL puo`

Inizializzazione dello stato OpenGL

OpenGL puo` essere vista come una macchina a stati: in ogni momento lo stato puo` essere interrogato o modificato 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 l’illuminazione

Texture mapping Modificatori ambientali

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Inizializzazione dello stato OpenGL • OpenGL puo`

Inizializzazione dello stato OpenGL

OpenGL puo` essere vista come una macchina a stati: in ogni momento lo stato puo` essere interrogato o modificato 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 l’illuminazione

Texture mapping

Modificatori ambientali

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Interrogazione dello stato OpenGL • istruzioni generiche

Interrogazione dello stato OpenGL

istruzioni generiche di interrogazione:

glGetBooleanv()

glGetDoublev()

glGetFloatv()

glGetIntegerv()

Istruzioni specifiche di interrogazione, messe a disposizione da GLUT:

glutLayerGet(GLenum info)

glutDeviceGet(Glenum info)

glutGetModifiers(void)

glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Interrogazione dello stato OpenGL • istruzioni generiche

Interrogazione dello stato OpenGL

istruzioni generiche di interrogazione:

glGetBooleanv()

glGetDoublev()

glGetFloatv()

glGetIntegerv()

Istruzioni specifiche di interrogazione, messe a disposizione da GLUT:

glutLayerGet(GLenum info)

glutDeviceGet(Glenum info)

glutGetModifiers(void)

glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Interrogazione dello stato OpenGL • istruzioni generiche

Interrogazione dello stato OpenGL

istruzioni generiche di interrogazione:

glGetBooleanv()

glGetDoublev()

glGetFloatv()

glGetIntegerv()

Istruzioni specifiche di interrogazione, messe a disposizione da GLUT:

glutLayerGet(GLenum info)

glutDeviceGet(Glenum info)

glutGetModifiers(void)

glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Interrogazione dello stato OpenGL • istruzioni generiche

Interrogazione dello stato OpenGL

istruzioni generiche di interrogazione:

glGetBooleanv()

glGetDoublev()

glGetFloatv()

glGetIntegerv()

Istruzioni specifiche di interrogazione, messe a disposizione da GLUT:

glutLayerGet(GLenum info)

glutDeviceGet(Glenum info)

glutGetModifiers(void)

glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Interrogazione dello stato OpenGL • istruzioni generiche

Interrogazione dello stato OpenGL

istruzioni generiche di interrogazione:

glGetBooleanv()

glGetDoublev()

glGetFloatv()

glGetIntegerv()

Istruzioni specifiche di interrogazione, messe a disposizione da GLUT:

glutLayerGet(GLenum info)

glutDeviceGet(Glenum info)

glutGetModifiers(void)

glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Interrogazione dello stato OpenGL • istruzioni generiche

Interrogazione dello stato OpenGL

istruzioni generiche di interrogazione:

glGetBooleanv()

glGetDoublev()

glGetFloatv()

glGetIntegerv()

Istruzioni specifiche di interrogazione, messe a disposizione da GLUT:

glutLayerGet(GLenum info)

glutDeviceGet(Glenum info)

glutGetModifiers(void) glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Interrogazione dello stato OpenGL • istruzioni generiche

Interrogazione dello stato OpenGL

istruzioni generiche di interrogazione:

glGetBooleanv()

glGetDoublev()

glGetFloatv()

glGetIntegerv()

Istruzioni specifiche di interrogazione, messe a disposizione da GLUT:

glutLayerGet(GLenum info)

glutDeviceGet(Glenum info)

glutGetModifiers(void)

glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Interrogazione dello stato OpenGL • istruzioni generiche

Interrogazione dello stato OpenGL

istruzioni generiche di interrogazione:

glGetBooleanv()

glGetDoublev()

glGetFloatv()

glGetIntegerv()

Istruzioni specifiche di interrogazione, messe a disposizione da GLUT:

glutLayerGet(GLenum info)

glutDeviceGet(Glenum info)

glutGetModifiers(void)

glutExtensionSupported(char * EXT)

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

Modifica dello stato OpenGL

La libreria GLUT

programma GLUT Modifica dello stato OpenGL La libreria GLUT Molti dei parametri memorizzati nella macchina a

Molti dei parametri memorizzati nella macchina a stati concorrono alla resa finale degli attributi superficiali delle primitive visualizzate

Istruzioni per modificare i singoli vertici da visualizzare

glColor*() /glIndex*()

glNormal*()

glTexCoord*()

Istruzioni per modificare la resa generale

glPointSize(GLfloat 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

Struttura di un programma GLUT

Modifica dello stato OpenGL

La libreria GLUT

programma GLUT Modifica dello stato OpenGL La libreria GLUT Molti dei parametri memorizzati nella macchina a

Molti dei parametri memorizzati nella macchina a stati concorrono alla resa finale degli attributi superficiali delle primitive visualizzate Istruzioni per modificare i singoli vertici da visualizzare

glColor*() /glIndex*()

glNormal*()

glTexCoord*()

Istruzioni per modificare la resa generale

glPointSize(GLfloat 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

Struttura di un programma GLUT

Modifica dello stato OpenGL

La libreria GLUT

programma GLUT Modifica dello stato OpenGL La libreria GLUT Molti dei parametri memorizzati nella macchina a

Molti dei parametri memorizzati nella macchina a stati concorrono alla resa finale degli attributi superficiali delle primitive visualizzate Istruzioni per modificare i singoli vertici da visualizzare

glColor*() /glIndex*()

glNormal*()

glTexCoord*()

Istruzioni per modificare la resa generale

glPointSize(GLfloat 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

Struttura di un programma GLUT

Modifica dello stato OpenGL

La libreria GLUT

programma GLUT Modifica dello stato OpenGL La libreria GLUT Molti dei parametri memorizzati nella macchina a

Molti dei parametri memorizzati nella macchina a stati concorrono alla resa finale degli attributi superficiali delle primitive visualizzate

Istruzioni per modificare i singoli vertici da visualizzare

glColor*() /glIndex*()

glNormal*()

glTexCoord*()

Istruzioni per modificare la resa generale

glPointSize(GLfloat 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

Struttura di un programma GLUT

Modifica dello stato OpenGL

La libreria GLUT

programma GLUT Modifica dello stato OpenGL La libreria GLUT Molti dei parametri memorizzati nella macchina a

Molti dei parametri memorizzati nella macchina a stati concorrono alla resa finale degli attributi superficiali delle primitive visualizzate

Istruzioni per modificare i singoli vertici da visualizzare

glColor*() /glIndex*()

glNormal*()

glTexCoord*()

Istruzioni per modificare la resa generale

glPointSize(GLfloat 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

Struttura di un programma GLUT

Modifica dello stato OpenGL

La libreria GLUT

programma GLUT Modifica dello stato OpenGL La libreria GLUT Molti dei parametri memorizzati nella macchina a

Molti dei parametri memorizzati nella macchina a stati concorrono alla resa finale degli attributi superficiali delle primitive visualizzate

Istruzioni per modificare i singoli vertici da visualizzare

glColor*() /glIndex*()

glNormal*()

glTexCoord*()

Istruzioni per modificare la resa generale

glPointSize(GLfloat 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

Struttura di un programma GLUT

Modifica dello stato OpenGL

La libreria GLUT

programma GLUT Modifica dello stato OpenGL La libreria GLUT Molti dei parametri memorizzati nella macchina a

Molti dei parametri memorizzati nella macchina a stati concorrono alla resa finale degli attributi superficiali delle primitive visualizzate

Istruzioni per modificare i singoli vertici da visualizzare

glColor*() /glIndex*()

glNormal*()

glTexCoord*()

Istruzioni per modificare la resa generale

glPointSize(GLfloat 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

Introduzione La libreria GLUT Struttura di un programma GLUT Salvataggio e ripristino dello stato OpenGL •

Struttura di un programma GLUT

Salvataggio e ripristino dello stato OpenGL

Istruzioni per salvare e ripristinare lo stato:

glPushAttrib(GLbitfield mask)

glPopAttrib()

Esercitazioni di OpenGL

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Struttura di un programma GLUT Salvataggio e ripristino dello stato OpenGL •

Struttura di un programma GLUT

Salvataggio e ripristino dello stato OpenGL

Istruzioni per salvare e ripristinare lo stato:

glPushAttrib(GLbitfield mask)

glPopAttrib()

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input Callback di

Rendering, ridimensionamento finestre, input

Callback di rendering

void glutDisplayFunc(void (*func)(void))

Vengono specificate tutte le istruzione per il disegno della scena

void glutPostRedisplay(void)

Redisplay dopo aver cambiato il contenuto della finestra

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input Callback di

Rendering, ridimensionamento finestre, input

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

Vengono specificate tutte le istruzione per il disegno della scena

void glutPostRedisplay(void)

Redisplay dopo aver cambiato il contenuto della finestra

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input Callback di

Rendering, ridimensionamento finestre, input

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

Vengono specificate tutte le istruzione per il disegno della scena

void glutPostRedisplay(void)

Redisplay dopo aver cambiato il contenuto della finestra

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input Callback di

Rendering, ridimensionamento finestre, input

Callback di rendering

void glutDisplayFunc(void (*func)(void))

Vengono specificate tutte le istruzione per il disegno della scena

void glutPostRedisplay(void)

Redisplay dopo aver cambiato il contenuto della finestra

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input Callback di

Rendering, ridimensionamento finestre, input

Callback di rendering

void glutDisplayFunc(void (*func)(void))

Vengono specificate tutte le istruzione per il disegno della scena

void glutPostRedisplay(void)

Redisplay dopo aver cambiato il contenuto della finestra

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input (cont) Funzioni

Rendering, ridimensionamento finestre, input (cont)

Funzioni per la gestione dell’input

void glutReshapeFunc(void (*func)(int w, int h))

Callback di ridimensionamento della finestra

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

Specifica 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))

Specifica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input (cont) Funzioni

Rendering, ridimensionamento finestre, input (cont)

Funzioni per la gestione dell’input void glutReshapeFunc(void (*func)(int w, int h))

Callback di ridimensionamento della finestra

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

Specifica 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))

Specifica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input (cont) Funzioni

Rendering, ridimensionamento finestre, input (cont)

Funzioni per la gestione dell’input void glutReshapeFunc(void (*func)(int w, int h))

Callback di ridimensionamento della finestra

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

Specifica 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))

Specifica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input (cont) Funzioni

Rendering, ridimensionamento finestre, input (cont)

Funzioni per la gestione dell’input

void glutReshapeFunc(void (*func)(int w, int h))

Callback di ridimensionamento della finestra

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

Specifica 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))

Specifica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input (cont) Funzioni

Rendering, ridimensionamento finestre, input (cont)

Funzioni per la gestione dell’input

void glutReshapeFunc(void (*func)(int w, int h))

Callback di ridimensionamento della finestra

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

Specifica 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))

Specifica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input (cont) Funzioni

Rendering, ridimensionamento finestre, input (cont)

Funzioni per la gestione dell’input

void glutReshapeFunc(void (*func)(int w, int h))

Callback di ridimensionamento della finestra

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

Specifica 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))

Specifica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input (cont) Funzioni

Rendering, ridimensionamento finestre, input (cont)

Funzioni per la gestione dell’input

void glutReshapeFunc(void (*func)(int w, int h))

Callback di ridimensionamento della finestra

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

Specifica 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))

Specifica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input (cont) Funzioni

Rendering, ridimensionamento finestre, input (cont)

Funzioni per la gestione dell’input

void glutReshapeFunc(void (*func)(int w, int h))

Callback di ridimensionamento della finestra

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

Specifica 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))

Specifica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

La libreria GLUT

Introduzione Struttura di un programma GLUT La libreria GLUT Rendering, ridimensionamento finestre, input (cont) Funzioni

Rendering, ridimensionamento finestre, input (cont)

Funzioni per la gestione dell’input

void glutReshapeFunc(void (*func)(int w, int h))

Callback di ridimensionamento della finestra

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

Specifica 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))

Specifica la funzione func da eseguire in corrispondenza del movimento del mouse da (x,y) con un tasto premuto

Esercitazioni di OpenGL

Introduzione

Struttura di un programma GLUT

Entrata nel ciclo principale

void glutMainLoop(void)

La libreria GLUT

principale • void glutMainLoop(void) La libreria GLUT • Ciclo degli eventi principale da chiamare come ultima

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

Struttura di un programma GLUT

Entrata nel ciclo principale

void glutMainLoop(void)

La libreria GLUT

principale • void glutMainLoop(void) La libreria GLUT • Ciclo degli eventi principale da chiamare come ultima

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

Struttura di un programma GLUT

Entrata nel ciclo principale

void glutMainLoop(void)

La libreria GLUT

principale • void glutMainLoop(void) La libreria GLUT • Ciclo degli eventi principale da chiamare come ultima

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

Struttura di un programma GLUT

Entrata nel ciclo principale

void glutMainLoop(void)

La libreria GLUT

principale • void glutMainLoop(void) La libreria GLUT • Ciclo degli eventi principale da chiamare come ultima

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

Introduzione La libreria GLUT Esempio di programma con GLUT Un esempio di programma con GLUT #include

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

glutInitWindowSize(648,

glutCreateWindow("Esempio");

480);

init();

glutReshapeFunc(resize);

glutDisplayFunc(display);

glutKeyboardFunc(

key

);

glutIdleFunc(

idle

);

glutMainLoop();

return

}

0;

Esercitazioni di OpenGL

|

GLUT_RGBA);

Introduzione

La libreria GLUT

Introduzione La libreria GLUT Esempio di programma con GLUT Un esempio di programma con GLUT (cont)

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

Introduzione La libreria GLUT Alcuni links utili

Alcuni links utili

Alcuni links utili

Documentazione ufficiale su OpenGL

Ottima raccolta di tutorials su OpenGL

OpenGL “Red Book”

Esercitazioni di OpenGL