opengl opengl-es opengl-es-2.0 opengl-es-3.0

opengl - ¿En qué estado de objeto se modifica glEnableVertexAttribArray?



opengl-es opengl-es-2.0 (1)

Afecta al estado del objeto de matriz de vértices.

Si es así, ¿qué ocurre con OpenGL ES 2.0, donde no hay VAO?

Entonces afecta el estado del contexto global. El conjunto de estados que se convertiría en estado VAO originalmente era solo estado global. Es por eso que existe el modelo de objeto bind-to-modify de OpenGL; para que cuando agregue nuevos objetos, no tenga que cambiar su código anterior.

Creo que entiendo lo que hace glEnableVertexAttribArray: activa un atributo particular de un programa (corrígeme si me equivoco).

Lo que no entiendo es qué objeto almacena esta información. ¿Es el objeto del programa? Es decir, si lo hago:

glUseProgram(program); glEnableVertexAttribArray(0);

y luego hacer:

glUseProgram(program); glDrawArray(...);

¿Se habilitará el atributo en la ubicación 0?

¿O está modificando algún estado global que debe restablecerse cada vez antes de cada llamada al sorteo? ¿O está modificando el estado del VAO? Si es así, ¿qué ocurre con OpenGL ES 2.0, donde no hay VAO?