【发布时间】:2015-05-04 17:08:38
【问题描述】:
【问题讨论】:
标签: opengl opengl-es opengl-es-2.0 opengl-3 opengl-4
【问题讨论】:
标签: opengl opengl-es opengl-es-2.0 opengl-3 opengl-4
在您的第一种情况下,Uniform 的 位置 与 glGetActiveUniform() 使用的 index 不同。
对于glGetActiveUniform() 的情况,索引只是介于 0 和您从glGetProgram( GL_ACTIVE_UNIFORMS,...) 获得的值减一之间的值。此 API 允许您查询程序的任何资源,并且您可以使用该方法遍历所有活动制服。统一位置可能不是从 0 开始,也可能根本不连续。
在您的第二个示例中,glGetAttribLocation() 和 glEnableVertexAttribArray() 都指的是同一个索引。 GL 有一组通用属性,通常由它们的索引引用,从 0 开始。但是,为了让事情更有趣,还有glGetActiveAttrib(),它类似于glGetActiveUniform() 一个:这里,索引仅指活动属性列表(范围为 0 到您从 glGetProgram( GL_ACTIVE_ATTRIBUTES,...) 获得的值减一,not 指实际的属性索引/位置。同样,此 API 允许您遍历所有存在(和活动)的属性。
【讨论】: