Update : I solved it. Even knowing my uniform is active (calling glGetProgrami(.)), the struct it references has some attributes that weren't initialized as uniforms, so the output was null or something.
I know this is an old one. I'm doing basic fragment shader programming. I have a problem when attempting to create a uniform for material structure of a mesh. Calling glGetUniformLocation() after the initialization of my shader program returns -1. However, the program is linked and validated correctly (no exceptions thrown). The uniform I'm trying to set is only in the fragment shader, so I attach the (short) piece of code:
in vec2 text;
out vec4 fragColor;
uniform sampler2D textSampler;
uniform Material material;
void setupColour(Material material)
col = material.modelC;
fragColor = texture(textSampler, text) + col;
I saw some posts on this. They say that the compiler assigns -1 value if the variable is useless. But I think the code actually uses the uniform! Any advice?