minecraft-source/src/com/mojang/blaze3d/shaders/ProgramManager.java

49 lines
1.9 KiB
Java
Raw Normal View History

2020-07-22 06:23:34 +01:00
package com.mojang.blaze3d.shaders;
import org.apache.logging.log4j.LogManager;
import java.io.IOException;
2020-07-22 06:25:47 +01:00
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
2020-07-22 06:23:34 +01:00
import org.apache.logging.log4j.Logger;
public class ProgramManager {
private static final Logger LOGGER;
2020-07-22 06:25:47 +01:00
public static void glUseProgram(final int integer) {
RenderSystem.assertThread(RenderSystem::isOnRenderThread);
GlStateManager._glUseProgram(integer);
2020-07-22 06:23:34 +01:00
}
2020-07-22 06:32:50 +01:00
public static void releaseProgram(final Effect dhc) {
2020-07-22 06:25:47 +01:00
RenderSystem.assertThread(RenderSystem::isOnRenderThread);
2020-07-22 06:32:50 +01:00
dhc.getFragmentProgram().close();
dhc.getVertexProgram().close();
GlStateManager.glDeleteProgram(dhc.getId());
2020-07-22 06:23:34 +01:00
}
2020-07-22 06:25:47 +01:00
public static int createProgram() throws IOException {
RenderSystem.assertThread(RenderSystem::isOnRenderThread);
final int integer1 = GlStateManager.glCreateProgram();
if (integer1 <= 0) {
throw new IOException("Could not create shader program (returned program ID " + integer1 + ")");
2020-07-22 06:23:34 +01:00
}
2020-07-22 06:25:47 +01:00
return integer1;
2020-07-22 06:23:34 +01:00
}
2020-07-22 06:32:50 +01:00
public static void linkProgram(final Effect dhc) throws IOException {
2020-07-22 06:25:47 +01:00
RenderSystem.assertThread(RenderSystem::isOnRenderThread);
2020-07-22 06:32:50 +01:00
dhc.getFragmentProgram().attachToEffect(dhc);
dhc.getVertexProgram().attachToEffect(dhc);
GlStateManager.glLinkProgram(dhc.getId());
final int integer2 = GlStateManager.glGetProgrami(dhc.getId(), 35714);
2020-07-22 06:25:47 +01:00
if (integer2 == 0) {
2020-07-22 06:32:50 +01:00
ProgramManager.LOGGER.warn("Error encountered when linking program containing VS {} and FS {}. Log output:", dhc.getVertexProgram().getName(), dhc.getFragmentProgram().getName());
ProgramManager.LOGGER.warn(GlStateManager.glGetProgramInfoLog(dhc.getId(), 32768));
2020-07-22 06:23:34 +01:00
}
}
static {
LOGGER = LogManager.getLogger();
}
}