What object's state does glEnableVertexAttribArray modify?

我是研究僧i 提交于 2019-12-04 05:08:08

问题


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:


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.



来源:https://stackoverflow.com/questions/34278991/what-objects-state-does-glenablevertexattribarray-modify

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!