为什么在 glEnableVertexAttribArray 中需要索引参数?

Why is there the need for the index argument in glEnableVertexAttribArray?

使用glVertexAttribPointer opengl 实现已经知道顶点着色器 顶点属性对象绑定到哪个属性location/index,那么为什么还需要再次提供 glEnableVertexAttribArray 中的属性索引?我想在使用 glBindVertexArray(VAO) 之后;仅使用 glEnableVertexAttribArray() 就足够了吗?为什么需要提供两次属性索引;一个在 glVertexAttribPointer 中,一个在 glEnableVertexAttribArray() 中? 请耐心等待,我是初学者,我还不知道 OpenGL 的所有方面。

[此问题不重复,因为有些人试图将其标记为重复以重定向到他们对一些不相关问题的回答以获得评分,这是自私的行为!如果您不知道如何回答,请不要通过将问题标记为重复来破坏问题。]

因为可以为所有使用 glVertexAttrib 的元素将顶点属性设置为 常量 的值。是的,你也可以使用制服来达到同样的效果,但是这种按属性选择值的来源(来自数组或设置常量)已经存在了很长时间(自 OpenGL-1.1 以来,虽然那时候它不是通用属性,而是特定属性,即位置、颜色、法线等)并且这个遗留问题被应用到通用顶点属性上。