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

时间:2016-10-02 09:53:10

标签: opengl shader vertex-shader vao

使用glVertexAttribPointer opengl实现已知道顶点着色器中的属性位置/索引顶点属性对象是绑定的,那么为什么需要在{{1}中提供属性索引再次?我想在使用glBindVertexArray(VAO)之后;只用glEnableVertexAttribArray就可以了吗?为什么需要提供两次属性索引; glEnableVertexAttribArray()中的一个和glVertexAttribPointer中的一个? 请耐心等待,我是初学者,我还不了解OpenGL的各个方面。

[这个问题不重复,因为有些人试图将其标记为重复,以便在某些不相关的问题上重定向到他们的答案以获得评分,这是自私行为!如果您不知道如何回答问题,请不要将问题标记为重复。

1 个答案:

答案 0 :(得分:0)

因为可以使用glVertexAttrib将顶点属性设置为所有元素的常量值。是的,您也可以使用制服来达到相同的效果,但是这种值来自(来自数组或设置常量)的属性选择已经存在多年(自OpenGL-1.1以来) ,虽然当时它不是通用属性,而是特定的属性,即位置,颜色,法线等)和这些遗留在通用顶点属性上的遗产。