當使用layout(location = ...)
指定着色器代碼中的頂點屬性位置時,我不需要在我的C++程序中使用glGetAttribLocation
獲取位置。是否保證自動頂點屬性分配的順序是正確的?
如果我既沒有使用佈局限定符來定義着色器中的位置,也沒有在我的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
來獲取它們。
我甚至可以把它們打印到控制檯'的std ::法院<< positionAttribute;';-) – danijar 2013-03-06 22:31:33