//--------------------------------------- void Effect::SetShaders( const Shader& vs, const Shader& fs ) { GLint success = 0; GLchar errorlog[1024] = { 0 }; GLsizei len = 0; // Create the program mProgramId = glCreateProgram(); if ( mProgramId ) { // Attach shaders glAttachShader( mProgramId, vs.GetShaderId() ); glAttachShader( mProgramId, fs.GetShaderId() ); // Link program glLinkProgram( mProgramId ); // Check for errors GLint success = GL_TRUE; glGetProgramiv( mProgramId, GL_LINK_STATUS, &success ); if ( success != GL_TRUE ) { WarnCrit( "ShaderError: Link Failed\n", "" ); DebugErrorLog(); glDeleteProgram( mProgramId ); mProgramId = 0; } // Validate program glValidateProgram( mProgramId ); // Check for errors success = GL_TRUE; glGetProgramiv( mProgramId, GL_VALIDATE_STATUS, &success ); if ( success != GL_TRUE ) { WarnCrit( "ShaderError: Link Failed\n", "" ); DebugErrorLog(); glDeleteProgram( mProgramId ); mProgramId = 0; } } else { WarnCrit( "ShaderProgram: Failed to create program\n", "" ); } }