OpenGL中的uniform和顶点属性的索引和位置是同一概念吗?

3
在OpenGL参考页面中,某些函数标记为使用统一变量位置,而其他函数标记为使用统一变量索引。它们是相同的吗?
类似地,对于顶点属性,某些函数标记为使用顶点属性索引,而其他函数标记为使用顶点属性位置。它们是相同的吗?
1个回答

5
在第一个例子中,Uniform的location与用于glGetActiveUniform()index不同。
对于glGetActiveUniform()情况,索引仅是从0到您从glGetProgram(GL_ACTIVE_UNIFORMS,...)获得的值减1之间的值。该API允许您查询程序的任何资源,并且您可以使用该方法遍历所有活动Uniform。Uniform的位置可能不从0开始,并且可能根本不连续。
在您的第二个示例中,glGetAttribLocation()glEnableVertexAttribArray()都引用相同的索引。 GL具有一组通用属性,通常按其索引(从0开始)引用。但是,为了使事情更有趣一些,还有一个类似于glGetActiveUniform()glGetActiveAttrib():这里,索引仅指活动属性列表(范围为0到您从glGetProgram(GL_ACTIVE_ATTRIBUTES,...)获得的值减1),而不是实际的属性索引/位置。同样,该API允许您遍历所有存在(和活动的)属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接