0
我一直在尋找很多這個問題。我發現這個問題Passing data into different shaders但這個問題不是我的。我得到「片段着色器使用不同的」普通「,但之前的着色器不寫入它。」錯誤信息。帶頂點/片段着色器的光源。使用不同的變量。 (openGL)
我vertey shader代碼:
#version 430
in layout(location=0) vec3 position;
in layout(location=1) vec3 normal;
out vec3 norm;
uniform mat4 transformation;
void main()
{
gl_Position = transformation * vec4(position, 1.0);
norm = (transformation * vec4(normal, 0.0)).xyz;
}
我的片段着色器代碼:
#version 430
in vec3 normal;
out vec4 colour;
vec3 lightPos = vec3(0,50,0);
vec3 lightColor = vec3(0.5, 0, 0);
vec3 materialColor = vec3(0, 1.0, 0);
void main() {
float cosTheta = dot(-lightPos, normalize(normal));
vec3 temp = materialColor * lightColor * cosTheta;
colour = vec4(temp, 1.0);
}
的主要問題是什麼?我不明白這個消息我的頂點着色器使用法向量,並傳遞給片段着色器。我沒有看到鏈接的代碼和我的區別。請告訴我一些想法:\
好吧,我覺得這是我的大錯。 Vertey着色器輸出和片段着色器輸入必須具有相同的名稱。 –
它們必須有相同的名稱,這是否解決了這個問題? – TomTsagk