package openmods.stencil;
import java.util.Set;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.shader.Framebuffer;
import openmods.Log;
import openmods.utils.render.OpenGLUtils;
public class FramebufferHooks {
static boolean STENCIL_BUFFER_INJECTED;
public static void createRenderbufferStorage(int target, int format, int width, int height) {
OpenGLUtils.flushGlErrors("pre stencil hook");
if (FramebufferConstants.isStencilBufferEnabled()) {
OpenGlHelper.func_153186_a(target, FramebufferConstants.DEPTH_STENCIL_FORMAT, width, height);
Set<Integer> errors = OpenGLUtils.getGlErrors();
if (errors.isEmpty()) {
STENCIL_BUFFER_INJECTED = true;
return;
}
Log.warn("Your potato failed to allocate nice buffer. No stencils for you. Cause: %s", OpenGLUtils.errorsToString(errors));
} else {
Log.warn("Packet depth+stencil buffer not supported");
}
OpenGlHelper.func_153186_a(target, format, width, height);
}
public static void attachRenderbuffer(Framebuffer fbo) {
if (STENCIL_BUFFER_INJECTED) {
OpenGlHelper.func_153190_b(OpenGlHelper.field_153198_e, FramebufferConstants.GL_STENCIL_ATTACHMENT, OpenGlHelper.field_153199_f, fbo.depthBuffer);
}
}
public static void init() {
FramebufferConstants.init();
}
}