lunedì 28 gennaio 2013

OpenGL come macchina a stati

OpenGL è una macchina a stati. Essa viene impostata in vari stati o modi di funzionamento e resta in quello stato sino a quando non viene modificato. Come si è già visto, il colore corrente è una variabile di stato. Si può impostare il colore corrente in bianco, rosso, e qualsiasi altro colore, quindi ogni oggetto sarà disegnato in quel colore, sino a quando il colore impostato non verrà cambiato. Altri controllano cose quali l'impostazione della vista attuale, e le trasformazioni della proiezione ortogonale, le trame di linee e poligoni, il modo di disegnare i poligoni, i metodi per impacchettare i pixel, e le posizioni e caratteristiche delle luci, le proprietà dei materiali degli oggetti disegnati. Molti di queste variabili di stato hanno modalità che possono attivate o disattivate mediante i comandi glEnable() o glDisable(). Ogni variabile di stato ha una modalità di default, e in ogni punto del programma si può chiedere al sistema il valore corrente. Tipicamente, vengono usati uno dei seguenti 6 comandi per conoscerlo: glGetBooleanv(), glGetDoublev(), glGetInteger(),glGetPointer(), glIsEnabled(). La selezione di alcuni di questi comandi dipende dal tipo di dato da recuperare. Alcune variabili di stato possiedono comandi specifici (quali glGetLight*(), glGetError() o glGetPolygonStipple(). Inoltre si possono salvare un insieme di variabili di stato su uno stack di attributi, mediante glPushAttrib() o glPushClientAttrib() temporaneamente. Dopo averle modificate, sono recuperate mediante le istruzioni glPopAttrib(), glPopClientAttrib(). Per cambiamenti di stato temporanei è consigliato utilizzare queste ultime istruzioni, in quanto sono più efficienti.

Nessun commento:

Posta un commento