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