I'm doing a project with assimp.
I got confused with the weird situation for me. I think the both code are exactly same, but the result is different.
Why the codes act differently?
(vertex shader)
#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aNormal;
layout (location = 2) in vec2 aTexCoords;
// declare an interface block; see 'Advanced GLSL' for what these are.
out VS_OUT {
vec2 TexCoords;
} vs_out;
out vec2 TexCoords;
uniform mat4 model;
uniform mat4 projection;
uniform mat4 view;
void main()
{
TexCoords = aTexCoords; ----(1)
//vs_out.TexCoords = aTexCoords; ----(2)
gl_Position = projection * view * model * vec4(aPos, 1.0);
}
(fragment shader)
#version 330 core
out vec4 FragColor;
in VS_OUT {
vec2 TexCoords;
} fs_in;
in vec2 TexCoords;
uniform sampler2D texture_diffuse1;
uniform vec3 lightPos;
uniform vec3 viewPos;
void main()
{
FragColor = vec4(texture(texture_diffuse1, TexCoords).rgb, 1.0); ----(1)
//FragColor = vec4(texture(texture_diffuse1, fs_in.TexCoords).rgb, 1.0); ----(2)
}
If I use the code above, the result is as follows
but, instead of (1) pair, if I use the pair (2), then the result is strange.
Why it happened?