我有两个不同的着色器:
in vert;
和
in vert;
in text;
当我致电glGetAttribLocation(program, "vert")
时,我会从两个着色器获得相同的位置吗?
每当我可以使用第二个着色器时,我可以使用第一个着色器吗?
答案 0 :(得分:3)
如果您没有明确指定属性位置,GL将使用任意映射。 (我在至少一个实现中看到了字母排序,但规范并不能保证任何内容。)
如果您需要可靠的属性位置,则可以明确指定它们。使用glBindAttribLocation
(必须在链接之前完成,因为属性位置是在链接时确定的),或者直接在着色器源(GL_ARB_explicit_attrib_location
)中通过layout(location=...)
限定符指定位置在声明输入时。后一条路径可用于GLSL 3.30。