我想我理解 glEnableVertexAttribArray 的作用——它激活了程序的特定属性(如果我错了,请纠正我)。
我不明白的是哪个对象存储了这些信息。是程序对象吗?也就是说,如果我这样做:
glUseProgram(program);
glEnableVertexAttribArray(0);
然后再做:
glUseProgram(program);
glDrawArray(...);
是否会启用位置 0 的属性?
或者它是否修改了一些需要在每次绘制调用之前重置的全局状态?还是在修改 VAO 的状态?如果是这样,那么在没有 VAO 的 OpenGL ES 2.0 中呢?