RenderUtils.java (1903B)
1 package de.oshgnacknak.create_ponder_wonder; 2 3 import com.mojang.blaze3d.matrix.MatrixStack; 4 import com.mojang.blaze3d.systems.RenderSystem; 5 import net.minecraft.client.Minecraft; 6 import net.minecraft.client.renderer.FogRenderer; 7 import net.minecraft.client.renderer.texture.NativeImage; 8 import net.minecraft.client.shader.Framebuffer; 9 import net.minecraft.util.ScreenShotHelper; 10 import org.lwjgl.opengl.GL11; 11 12 import java.util.function.Consumer; 13 14 public class RenderUtils { 15 16 public static final double SCALE = 5; 17 public static final int WIDTH = 1920; 18 public static final int HEIGHT = 1080; 19 public static final double Z_DISTANCE = 1400; 20 21 private RenderUtils() {} 22 23 public static NativeImage render(Consumer<MatrixStack> renderFunc) { 24 Framebuffer fb = new Framebuffer(WIDTH, HEIGHT, true, Minecraft.IS_RUNNING_ON_MAC); 25 26 RenderSystem.pushMatrix(); 27 RenderSystem.enableBlend(); 28 RenderSystem.clear(16640, Minecraft.IS_RUNNING_ON_MAC); 29 fb.bindFramebuffer(true); 30 FogRenderer.setFogBlack(); 31 32 RenderSystem.enableTexture(); 33 RenderSystem.enableCull(); 34 35 RenderSystem.viewport(0, 0, WIDTH, HEIGHT); 36 37 RenderSystem.matrixMode(GL11.GL_PROJECTION); 38 RenderSystem.loadIdentity(); 39 RenderSystem.ortho( 40 0.0d, 41 WIDTH, 42 HEIGHT, 43 0.0d, 0, 44 3000.0d); 45 RenderSystem.matrixMode(GL11.GL_MODELVIEW); 46 RenderSystem.loadIdentity(); 47 48 MatrixStack matrixStack = new MatrixStack(); 49 matrixStack.translate(0, 0, -Z_DISTANCE); 50 net.minecraft.client.renderer.RenderHelper.enableGuiDepthLighting(); 51 52 RenderSystem.defaultAlphaFunc(); 53 54 renderFunc.accept(matrixStack); 55 56 RenderSystem.disableBlend(); 57 RenderSystem.popMatrix(); 58 59 return ScreenShotHelper.createScreenshot(WIDTH, HEIGHT, fb); 60 } 61 62 }