The compileProgram function calls check_validate on the newly linked program object which can lead to a situation where
validation fails due to an incompatible gl state, yet there are no errors reported in either compiling or linking.
Validation should only be performed before *using* the shader program - so as to check whether or not the shader will execute correctly with the current opengl state and not to be used as an indication of compilation success.
If validation fails due to an incompatible state, but shader compilation and linking succeeds, it causes a catch-22 because the function throws an error and you can't change the state if you aren't returned the linked program.
Log in to post a comment.