Salvataggio e ripristino di set di variabili di stato
È possibile salvare e ripristinare i valori di una raccolta di variabili di stato in uno stack di attributi con le funzioni glPushAttrib e glPopAttrib. Lo stack di attributi ha una profondità di almeno 16. Per ottenere la profondità effettiva, usare GL_MAX_ATTRIB_STACK_DEPTH con glGetIntegerv. Il push di uno stack completo o l'estrazione di uno vuoto genera un errore.
In genere è più veloce usare glPushAttrib e glPopAttrib piuttosto che ottenere e ripristinare i valori manualmente. Alcuni valori possono essere inseriti e inseriti nell'hardware e il salvataggio e il ripristino possono richiedere un uso intensivo delle risorse. Inoltre, se si usa un client remoto, tutti i dati dell'attributo devono essere trasferiti attraverso la connessione di rete e di nuovo mentre vengono salvati e ripristinati. Tuttavia, l'implementazione di OpenGL mantiene lo stack di attributi nel server, evitando ritardi di rete non necessari.
Il prototipo di glPushAttrib è:
void glPushAttrib(GLbitfield mask );
L'uso di glPushAttrib salva tutti gli attributi indicati da bit in maschera inserendoli nello stack di attributi. Per un elenco dei possibili bit di maschera, è possibile usare OR logico per salvare qualsiasi combinazione di attributi, vedere Gruppi di attributi. Ogni bit corrisponde a una raccolta di singole variabili di stato. Ad esempio, GL_LIGHTING_BIT fa riferimento a tutte le variabili di stato correlate all'illuminazione, che includono il colore del materiale corrente; la luce ambientale, diffusa, speculare ed emessa; un elenco delle luci abilitate; e le direzioni dei riflettori. Quando si chiama glPopAttrib, tutte queste variabili vengono ripristinate. Per scoprire esattamente quali attributi vengono salvati per valori di maschera specifici, vedere Variabili di stato OpenGL.