package net.minecraft.client.shader; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.util.JsonException; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @SideOnly(Side.CLIENT) public class ShaderLinkHelper { private static final Logger logger = LogManager.getLogger(); private static ShaderLinkHelper staticShaderLinkHelper; private static final String __OBFID = "CL_00001045"; public static void setNewStaticShaderLinkHelper() { staticShaderLinkHelper = new ShaderLinkHelper(); } public static ShaderLinkHelper getStaticShaderLinkHelper() { return staticShaderLinkHelper; } public void deleteShader(ShaderManager p_148077_1_) { p_148077_1_.getFragmentShaderLoader().deleteShader(p_148077_1_); p_148077_1_.getVertexShaderLoader().deleteShader(p_148077_1_); OpenGlHelper.glDeleteProgram(p_148077_1_.getProgram()); } public int createProgram() throws JsonException { int i = OpenGlHelper.glCreateProgram(); if (i <= 0) { throw new JsonException("Could not create shader program (returned program ID " + i + ")"); } else { return i; } } public void linkProgram(ShaderManager manager) { manager.getFragmentShaderLoader().attachShader(manager); manager.getVertexShaderLoader().attachShader(manager); OpenGlHelper.glLinkProgram(manager.getProgram()); int i = OpenGlHelper.glGetProgrami(manager.getProgram(), OpenGlHelper.GL_LINK_STATUS); if (i == 0) { logger.warn("Error encountered when linking program containing VS " + manager.getVertexShaderLoader().getShaderFilename() + " and FS " + manager.getFragmentShaderLoader().getShaderFilename() + ". Log output:"); logger.warn(OpenGlHelper.glGetProgramInfoLog(manager.getProgram(), 32768)); } } }