Welchen Objektstatus ändert glEnableVertexAttribArray?

Ich denke, ich verstehe, was glEnableVertexAttribArray tut - es aktiviert ein bestimmtes Attribut eines Programms (bitte korrigieren Sie mich, wenn ich falsch liege).

Was ich nicht verstehe, ist, welches Objekt diese Informationen speichert. Ist es das Programmobjekt? Das heißt, wenn ich tue:

glUseProgram(program);
glEnableVertexAttribArray(0);

und dann später machen Sie:

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

wird das Attribut an Position 0 aktiviert?

Oder ändert es einen globalen Status, der jedes Mal vor jedem Draw-Aufruf zurückgesetzt werden muss? Oder ändert es den Zustand der VAO? Wenn ja, was ist mit OpenGL ES 2.0, wo gibt es keine VAOs?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage