@@ -582,6 +582,13 @@ int opengl_compile_shader(shader_type sdr, uint flags)
582582 glBindAttribLocation (program->getShaderHandle (), i, GL_vertex_attrib_info[i].name .c_str ());
583583 }
584584
585+ // bind fragment data locations before we link the shader
586+ glBindFragDataLocation (program->getShaderHandle (), 0 , " fragOut0" );
587+ glBindFragDataLocation (program->getShaderHandle (), 1 , " fragOut1" );
588+ glBindFragDataLocation (program->getShaderHandle (), 2 , " fragOut2" );
589+ glBindFragDataLocation (program->getShaderHandle (), 3 , " fragOut3" );
590+ glBindFragDataLocation (program->getShaderHandle (), 4 , " fragOut4" );
591+
585592 if (do_shader_caching ()) {
586593 // Enable shader caching
587594 glProgramParameteri (program->getShaderHandle (), GL_PROGRAM_BINARY_RETRIEVABLE_HINT, GL_TRUE);
@@ -602,13 +609,6 @@ int opengl_compile_shader(shader_type sdr, uint flags)
602609
603610 opengl_shader_set_current (&new_shader);
604611
605- // bind fragment data locations
606- glBindFragDataLocation (new_shader.program ->getShaderHandle (), 0 , " fragOut0" );
607- glBindFragDataLocation (new_shader.program ->getShaderHandle (), 1 , " fragOut1" );
608- glBindFragDataLocation (new_shader.program ->getShaderHandle (), 2 , " fragOut2" );
609- glBindFragDataLocation (new_shader.program ->getShaderHandle (), 3 , " fragOut3" );
610- glBindFragDataLocation (new_shader.program ->getShaderHandle (), 4 , " fragOut4" );
611-
612612 // initialize uniforms and attributes
613613 for (auto & unif : sdr_info->uniforms ) {
614614 new_shader.program ->Uniforms .initUniform (unif);
0 commit comments