What object's state does glEnableVertexAttribA

2019-03-03 05:17发布

I think I understand what glEnableVertexAttribArray does -- it activates a particular attribute of a program (please correct me if I am wrong).

What I don't understand though is which object stores this information. Is it the program object? That is, if I do:

glUseProgram(program);
glEnableVertexAttribArray(0);

and then later on do:

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

will the attribute at location 0 be enabled?

Or is it modifying some global state which needs to be reset every time before each draw call? Or is it modifying the state of the VAO? If so, what about in OpenGL ES 2.0, where there are no VAOs?

1条回答
爷的心禁止访问
2楼-- · 2019-03-03 05:57

It affects vertex array object state.

If so, what about in OpenGL ES 2.0, where there are no VAOs?

Then it affect global context state. The set of state that would become VAO state was originally just global state. That's why the OpenGL bind-to-modify object model exists; so that when you add new objects, you don't have to change your old code.

查看更多
登录 后发表回答