opengl - Shader link error after installing latest NVidia Quadro driver (311.35) -
i installed latest nvidia driver quadro 4000 cards.from moment of shaders linking fails shader link error. worth noting using opengl 4.2 separate shader objects.my os windows7 64bit . before update had 309.x version of driver , worked fine. rolled version 295.x , works again. knows it?can driver bug? if yes, can done it?
here simple pass through vertex shader fails:
#version 420 core layout(location = 0) in vec4 position; layout(location = 1) in vec2 uvs; layout(location = 2) in vec3 normal; smooth out vec2 uvsout; void main() { uvsout=uvs; gl_position = position; }
another question ,is possible nvidia tightened shader version semantics rules? mean ,i using opengl compatibility profile in glsl mark #version 420 core.can problem?
update:
some more info program info log:
error c7592: arb_separate_shader_objects requrires built-in block gl_pervertex redeclared before accesing members.
yeah , driver writer has typos "accesing " ;)
now , solved linking error adding :
out gl_pervertex { vec4 gl_position; };
it strange previous drivers didn't enforce redefinition of gl_pervertex block.now ,while addon solved issue linking, opened 1 varying uniforms don't work.for example have in vertex shader:
out vec4 diffuseout;
and in fragment shader:
in vec4 diffuseout;
then
output = diffuseout;/// returns black while red expected.
update 2 : ok , becomes clear - new drivers stricter on shaders input/output variables.with older driver define several "outs" in vertex shader without defining "in" match in fragment shader.it worked.now seems forced have exact match between declared "ins" , "outs" in vert , frag program.strange no errors being thrown result defined "ins" become empty in destination.
Comments
Post a Comment