Computer Graphics
Università dell’Insubria
Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica
Lezione 14:
Lezione 14:
Lezione 14:
Lezione 14: display lists
Marco Tarini
Corso di Laurea in Informatica Anno Accademico 2010/11
Display Lists
• Codice (es. in C++) che fa rendering:
mix di
– istruzioni openGL che mandano primitive – comandi vari
• (cicli, guardie...)
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
• (cicli, guardie...)
• Idea:
– la prima volta,
registrare tutte le primitive e i comandi in una struttura (in RAM);
le volte successive mandare solo le primitive (senza comandi intermedi)
Display Lists
• Esempio di codice
sedia = glGenLists( 1 );
glNewList( sedia, GL_COMPILE );
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
... /* qui tutto il rendering ... dell oggetto “sedia" */
glEndList();
/* quando la voglio richiamare: */
glCallList( sedia );
Display Lists
• Difetti Display List:
– sono statiche
– consumo di memoria (in RAM).
• Vantaggi
– evitano tutte le chiamate di funzione, i cicli, etc
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
– evitano tutte le chiamate di funzione, i cicli, etc – danno la possibilità all’API openGL di ottimizzare
(durante la "compilazione" della lista), per es:
• convertire tutti i dati nel formato interno piu’ conveniente
• stripificazione
• memorizzare nella scheda video
– come V.B.O., Vertex Buffer Object (vedi poi)Il collo di bottiglia (bottleneck)...
può essere anche la comunicazione!
Frammenti & attributi & attributi & attributi & attributi interpolatiinterpolatiinterpolatiinterpolati Vertici & loro attributi& loro attributi& loro attributi& loro attributi
Screen
Vertici poriettati & attributi & attributi & attributi & attributi computaticomputaticomputaticomputatirasterizer set-
rasterizer punti set-up
computazioni per vertice computazioni per frammento
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Frammenti & attributi & attributi & attributi & attributi interpolatiinterpolatiinterpolatiinterpolati Vertici & loro attributi& loro attributi& loro attributi& loro attributi
Screen buffer
Vertici poriettati & attributi & attributi & attributi & attributi computaticomputaticomputaticomputatirasterizer triangoli set-up
rasterizer segmenti set-up
computazioni per vertice computazioni per frammento
collo di bottiglia qui?
applicazione BUS LIMITED o BANDWIDTH LIMITED
Vertex Buffer Objects (VBO)
Frammenti & attributi & attributi & attributi & attributi interpolatiinterpolatiinterpolatiinterpolati Vertici & loro attributi& loro attributi& loro attributi& loro attributi
Screen
Vertici poriettati & attributi & attributi & attributi & attributi computaticomputaticomputaticomputatirasterizer set-
rasterizer punti set-up
computazioni per vertice computazioni per frammento
M a r c o T a r i n i ‧ C o m p u t e r G r a p h i c s ‧ 2 0 1 0 / 1 1 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Frammenti & attributi & attributi & attributi & attributi interpolatiinterpolatiinterpolatiinterpolati Vertici & loro attributi& loro attributi& loro attributi& loro attributi
Screen buffer
Vertici poriettati & attributi & attributi & attributi & attributi computaticomputaticomputaticomputatirasterizer triangoli set-up
rasterizer segmenti set-up
computazioni per vertice computazioni per frammento
memoria per i Vertex Buffer
Objects