glEnableVertexAttribArray修改了哪个对象的状态?

时间:2015-12-15 00:20:13

标签: opengl opengl-es opengl-es-2.0 opengl-es-3.0

我想我理解glEnableVertexAttribArray的作用 - 它会激活程序的特定属性(如果我错了,请纠正我)。

我不明白的是哪个对象存储了这些信息。它是程序对象吗?也就是说,如果我这样做:

glUseProgram(program);
glEnableVertexAttribArray(0);

然后再做:

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

是否会启用位置0的属性?

或者它是否正在修改一些需要在每次绘制调用之前重置的全局状态? 或者它是在修改VAO的状态?如果是这样,那么在没有VAO的OpenGL ES 2.0中呢?

1 个答案:

答案 0 :(得分:2)

它影响顶点数组对象状态。

  

如果是这样,那么在没有VAO的OpenGL ES 2.0中呢?

然后它会影响全局上下文状态。将成为VAO状态的一组状态最初只是全球状态。这就是OpenGL绑定到修改对象模型存在的原因;因此,当您添加新对象时,您不必更改旧代码。