2011-10-10 3 views

risposta

40

Utilizzato principalmente con la modalità immediata precedente (glBegin/glEnd), in cui non si utilizzano gli array di vertici, che sono deprecati (e rimossi in OpenGL ES 2.0 e desktop OpenGL 3+ core).

Ma questa funzione ha ancora il suo utilizzo con gli array (è per questo che è ancora presente nelle versioni moderne). Hai ragione nel supporre che tutti i vertici che seguono questa chiamata abbiano lo stesso valore per questo attributo (solo se non abiliti l'array di questo attributo, ovviamente). O più esattamente ogni attributo shader usato che non ha il suo array corrispondente abilitato fonti il ​​suo valore da un singolo valore di stato e questo valore può essere modificato con glVertexAttrib.

Ciò è utile se si dispone di uno shader generale con ad es. un attributo color e un attributo position e hai un oggetto con un colore costante. Quindi usando glVertexAttrib non devi inviare un colore per ogni vertice, né devi usare uno shader speciale con il colore cambiato in uniforme.

+2

L'utilizzo di un singolo colore è un buon esempio. Grazie! –

+0

Risposta stupenda :-) Mi sono sempre chiesto, perché si dovrebbe usare un attributo costante invece di una uniforme; ma il tuo esempio ha perfettamente senso per me. – Mecki