对于制服和顶点属性,OpenGL 索引和位置是否相同?
Are OpenGL indices and locations the same thing for uniforms and vertex attributes?
在 OpenGL 参考页中,some functions are marked as using uniform locations, while other 函数被标记为使用统一索引。这些是一样的吗?
与顶点属性类似,some functions are marked as using vertex attribute indices, while other 函数被标记为使用顶点属性位置。这些是一样的吗?
在第一种情况下,制服的 location 不同于 glGetActiveUniform()
的 index。
对于 glGetActiveUniform()
的情况,索引只是介于 0 和您从 glGetProgram( GL_ACTIVE_UNIFORMS,...)
获得的值减一之间的值。此 API 允许您查询程序的任何资源,并且您可以使用该方法遍历所有活动的制服。统一位置可能不是从 0 开始,也可能根本不连续。
在您的第二个示例中,glGetAttribLocation()
和 glEnableVertexAttribArray()
都引用相同的索引。 GL 有一组通用属性,一般由它们的索引引用,从 0 开始。但是,为了让事情更有趣一点,还有 glGetActiveAttrib()
类似于 glGetActiveUniform()
一:在这里,索引仅指活动属性列表(在 0 到您从 glGetProgram( GL_ACTIVE_ATTRIBUTES,...)
减一得到的值的范围内,not 到实际属性 index/location。同样,这个 API 允许您迭代所有存在(和活动)的属性。
在 OpenGL 参考页中,some functions are marked as using uniform locations, while other 函数被标记为使用统一索引。这些是一样的吗?
与顶点属性类似,some functions are marked as using vertex attribute indices, while other 函数被标记为使用顶点属性位置。这些是一样的吗?
在第一种情况下,制服的 location 不同于 glGetActiveUniform()
的 index。
对于 glGetActiveUniform()
的情况,索引只是介于 0 和您从 glGetProgram( GL_ACTIVE_UNIFORMS,...)
获得的值减一之间的值。此 API 允许您查询程序的任何资源,并且您可以使用该方法遍历所有活动的制服。统一位置可能不是从 0 开始,也可能根本不连续。
在您的第二个示例中,glGetAttribLocation()
和 glEnableVertexAttribArray()
都引用相同的索引。 GL 有一组通用属性,一般由它们的索引引用,从 0 开始。但是,为了让事情更有趣一点,还有 glGetActiveAttrib()
类似于 glGetActiveUniform()
一:在这里,索引仅指活动属性列表(在 0 到您从 glGetProgram( GL_ACTIVE_ATTRIBUTES,...)
减一得到的值的范围内,not 到实际属性 index/location。同样,这个 API 允许您迭代所有存在(和活动)的属性。