当使用在着色器代码中指定顶点属性位置时,layout(location = ...)
我不需要glGetAttribLocation
在我的 C++ 程序中使用获取位置。
如果我既没有使用布局限定符在着色器中定义位置,也没有在我的 C++ 程序中获取它们,它们会被自动分配。问题是关于这个自动分配。顺序是否等于着色器代码中的定义顺序?
例如,在第一个着色器代码中,位置是否保证与第二个着色器代码中的位置相同?
// first shader code
#version 330
in vec3 position;
in vec3 normal;
in vec2 texcoord;
// second shader code
#version 330
layout(location = 0) in vec3 position;
layout(location = 1) in vec3 normal;
layout(location = 2) in vec2 texcoord;
此外,相同的规则是否适用于片段着色器输出?现在我glBindFragDataLocation
用来取它们。