Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[Solved][1.16.5] Issue with rendering texture using Tessellator and BufferBuilder


Recommended Posts

Posted (edited)

I have coded a little test to experiment with rendering fullscreen overlays for my mod in Minecraft. As it is my first time delving into this kind of rendering, I started off simple, basically copying the renderPumpkin() method but I am having issues. My goal is to render textures that will show up on a player's screen in certain situations. For this test, I just went with the standard pumpkinblur. I used a RenderGameOverlayEvent.Post to trigger the rendering of the pumpkin. Here is my event code:

@EventBusSubscriber(modid = Epidemics.MOD_ID, bus = Bus.FORGE)
public class GuiRenderEvents {

    @SubscribeEvent
    public static void renderGameOverlay(RenderGameOverlayEvent.Post event) {
        if (event.getType() == RenderGameOverlayEvent.ElementType.HOTBAR) {
        	//System.out.println("Event Triggered");
        	new RenderTest(Minecraft.getInstance());
        }
    }
}

I then created a class that extends InGameGUI to render the pumpkin. It almost directly copies the renderPumpkin() method in InGameGUI.

import com.mojang.blaze3d.systems.RenderSystem;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.IngameGui;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;

public class RenderTest extends IngameGui{
	
	public RenderTest(Minecraft minecraft) {
		super(minecraft);
		renderTest(minecraft);
	}
	
	private void renderTest(Minecraft minecraft) {
		RenderSystem.disableDepthTest();
		RenderSystem.depthMask(false);
		RenderSystem.defaultBlendFunc();
		RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
		RenderSystem.disableAlphaTest();
		minecraft.getTextureManager().bind(PUMPKIN_BLUR_LOCATION);
		Tessellator tessellator = Tessellator.getInstance();
		BufferBuilder bufferbuilder = tessellator.getBuilder();
		bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
		bufferbuilder.vertex(0.0D, (double)this.screenHeight, -90.0D).uv(0.0F, 1.0F).endVertex();
		bufferbuilder.vertex((double)this.screenWidth, (double)this.screenHeight, -90.0D).uv(1.0F, 1.0F).endVertex();
		bufferbuilder.vertex((double)this.screenWidth, 0.0D, -90.0D).uv(1.0F, 0.0F).endVertex();
		bufferbuilder.vertex(0.0D, 0.0D, -90.0D).uv(0.0F, 0.0F).endVertex();
		tessellator.end();
		RenderSystem.depthMask(true);
		RenderSystem.enableDepthTest();
		RenderSystem.enableAlphaTest();
		RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
	}
}

The renderTest() method is being triggered but I do not see anything on my screen. Can you spot where I might have forgotten something?

Edited by MonkeyKnight
Link to post
Share on other sites

I have a quick update. I have narrowed down the issue to the renderGameOverlay.post event. I changed the code of the renderTest constructor to just trigger the vanilla renderPumpkin() method and there still was no pumpkin face shown.

	public RenderTest(Minecraft minecraft) {
		super(minecraft);
		renderPumpkin();
		/*
		screenWidth = minecraft.getWindow().getGuiScaledWidth();
	    	screenHeight = minecraft.getWindow().getGuiScaledHeight();
		renderTest(minecraft);
		*/
	}

Do you have any suggestions on what I should change in my render event?

Link to post
Share on other sites
  • MonkeyKnight changed the title to [1.16.5] Issue with rendering texture using Tessellator and BufferBuilder

I have another update! I changed my render event code to this:

@EventBusSubscriber(modid = Epidemics.MOD_ID, bus = Bus.FORGE)
public class GuiRenderEvents {

    @SubscribeEvent
    public static void renderGameOverlay(RenderGameOverlayEvent.Post event) {
        if (event.getType() == RenderGameOverlayEvent.ElementType.HOTBAR) {
        	System.out.println(1);
        	RenderTest render = new RenderTest(Minecraft.getInstance());
        	render.renderTestPumpkin(Minecraft.getInstance());
        }
    }
}
public class RenderTest extends IngameGui{

	private int screenWidth;
	private int screenHeight;
	public RenderTest(Minecraft minecraft) {
		super(minecraft);
		
		screenWidth = minecraft.getWindow().getGuiScaledWidth();
	    screenHeight = minecraft.getWindow().getGuiScaledHeight();
	    /*
		renderTest(minecraft);
		*/
	}
	
	public void renderTestPumpkin(Minecraft minecraft) {
		RenderSystem.disableDepthTest();
		RenderSystem.depthMask(false);
		RenderSystem.defaultBlendFunc();
		RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
		RenderSystem.disableAlphaTest();
		minecraft.getTextureManager().bind(PUMPKIN_BLUR_LOCATION);
		Tessellator tessellator = Tessellator.getInstance();
		BufferBuilder bufferbuilder = tessellator.getBuilder();
		bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
		bufferbuilder.vertex(0.0D, (double)screenHeight, -90.0D).uv(0.0F, 1.0F).endVertex();
		bufferbuilder.vertex((double)screenWidth, (double)screenHeight, -90.0D).uv(1.0F, 1.0F).endVertex();
		bufferbuilder.vertex((double)screenWidth, 0.0D, -90.0D).uv(1.0F, 0.0F).endVertex();
		bufferbuilder.vertex(0.0D, 0.0D, -90.0D).uv(0.0F, 0.0F).endVertex();
		tessellator.end();
		RenderSystem.depthMask(true);
		RenderSystem.enableDepthTest();
		RenderSystem.enableAlphaTest();
		RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
	}
}

Now it is showing up n the game, just as a black screen though. Do you know what is causing the black screen?

bug.png.1dc7046e9156a87a0a2cd9a15608bc5c.png

Link to post
Share on other sites
  • MonkeyKnight changed the title to [Solved][1.16.5] Issue with rendering texture using Tessellator and BufferBuilder

Sure, here are my two classes that I used. 

The render event:

@EventBusSubscriber(modid = Epidemics.MOD_ID, bus = Bus.FORGE)
public class GuiRenderEvents {

    @SubscribeEvent
    public static void renderGameOverlay(RenderGameOverlayEvent.Post event) {
        if (event.getType() == RenderGameOverlayEvent.ElementType.ALL) {
        	System.out.println(1);
        	RenderTest render = new RenderTest(Minecraft.getInstance());
        	render.renderTestPumpkin(Minecraft.getInstance());
        }
    }
}

The renderer:

public class RenderTest extends IngameGui{

	public static final ResourceLocation NEW_PUMPKIN_LOCATION = new ResourceLocation(Epidemics.MOD_ID + ":textures/gui/pumpkinblurtest.png");
	private int screenWidth;
	private int screenHeight;
	public RenderTest(Minecraft minecraft) {
		super(minecraft);
		
		screenWidth = minecraft.getWindow().getGuiScaledWidth();
	    screenHeight = minecraft.getWindow().getGuiScaledHeight();
	}
	
	public void renderTestPumpkin(Minecraft minecraft) {
		RenderSystem.disableDepthTest();
		RenderSystem.enableBlend();
		RenderSystem.depthMask(false);
		RenderSystem.defaultBlendFunc();
		RenderSystem.blendFuncSeparate(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA, SourceFactor.ONE, DestFactor.ZERO);
		RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
		RenderSystem.disableAlphaTest();
		minecraft.getTextureManager().bind(NEW_PUMPKIN_LOCATION);
		Tessellator tessellator = Tessellator.getInstance();
		BufferBuilder bufferbuilder = tessellator.getBuilder();
		bufferbuilder.begin(7, DefaultVertexFormats.POSITION_TEX);
		bufferbuilder.vertex(0.0D, (double)screenHeight, -90.0D).uv(0.0F, 1.0F).endVertex();
		bufferbuilder.vertex((double)screenWidth, (double)screenHeight, -90.0D).uv(1.0F, 1.0F).endVertex();
		bufferbuilder.vertex((double)screenWidth, 0.0D, -90.0D).uv(1.0F, 0.0F).endVertex();
		bufferbuilder.vertex(0.0D, 0.0D, -90.0D).uv(0.0F, 0.0F).endVertex();
		tessellator.end();
		RenderSystem.depthMask(true);
		RenderSystem.enableDepthTest();
		RenderSystem.enableAlphaTest();
		RenderSystem.color4f(1.0F, 1.0F, 1.0F, 1.0F);
	}
}

 

  • Thanks 1
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • protected static final DimensionType NETHER_TYPE = new DimensionType(OptionalLong.of(18000L), false, true, true, false, 8.0D, false, true, false, true, false, 128, FuzzedBiomeMagnifier.INSTANCE, BlockTags.INFINIBURN_NETHER.getName(), THE_NETHER_ID, 0.1F); I found that 8.0D its what i need but i dosent know now to change this or override nether_type.
    • Please post your server log, it should give a clue what's going on.
    • It looks like you may be trying to reply to someone's support post, you instead you created a new one.
    • compactstorage-1.16.5-5.1b17.jarcarryon-1.16.5-1.15.5.15.jarAdHooks-1.16.4-6.1.5.0-build.0124.jarXaerosWorldMap_1.14.1_Forge_1.16.5.jarXaeros_Minimap_21.10.0.3_Forge_1.16.5.jartrashcans-1.0.10-mc1.16.5.jarSuperTools-1.2_1.16.5.jarSpartanShields-1.16.5-2.1.2.jarrandomite-1.16.4-1.0.1.jaroverloadedarmorbar-5.1.0.jaroresplusmod_1.16.5,0.1.0.jarturtle_armor-1.3.4.jartoyguns-0.1-1.16.4.jartoughnessbar-6.1.jartorchmaster-2.3.7.jarToast-Control-1.16.4-4.3.1.jartitanium-1.16.5-3.2.8.4-10.jarthermal_expansion-1.16.4-1.2.0.jartheoneprobe-1.16-3.1.4.jarthedragonlib-1.16.3-1.1.0.jarswingthroughgrass-1.16.4-1.5.3.jarsuper+armor-5.0.4(EN).jarStorageDrawers-1.16.3-8.2.2.jarsteveGolemMod_1.3.0.jarSteelArmory.jarSoulBound-1.1.3-1.16.5.jarSimplyBetter.jarSimple guns reworked 1.16.5 v1.4.jarsilent-lib-1.16.3-4.9.6.jarRunelic-1.16.5-7.0.1.jarrftoolsbase-1.16-2.0.10.jarReAuth-1.16-Forge-3.9.3.jarrandompatches-2.4.4-forge.jarprecious_armor-1.16.5.jarPlacebo-1.16.4-4.5.0.jarPatchouli-1.16.4-51.jaroverloadedarmorbar-5.1.0.jarOreExcavation-1.8.157.jarOp Armor Plus 1.16.5 0.6.jarobserverlib-1.16.5-1.5.3.jarobfuscate-0.6.2-1.16.3.jarnetheritehorsearmor-1.7.jarNeat 1.7-27.jarNaturesCompass-1.16.5-1.9.0.jarMouseTweaks-2.14-mc1.16.2.jarMorpheus-1.16.5-4.2.70.jarMoreOresArmorsAndTools 1.2.5.jarMoreArmor-1-4-0.jarMekanismTools-1.16.5-10.0.21.448.jarMekanismGenerators-1.16.5-10.0.21.448.jarmcjtylib-1.16-5.0.19.jarMantle-1.16.5-1.6.103.jarMachineBoy's ArmorTool v1.2b1.jarJustEnoughResources-1.16.5-0.12.1.121.jarJEITweaker-1.16.5-1.0.1.28.jarjei-1.16.5-7.7.0.106.jarJ0T0S0 Weapons 1.0.0.jarironchest-1.16.4-11.2.10.jarillagersweararmor-1.0.4.jariChunUtil-1.16.5-10.4.1.jarhitscan-1.0.1.jarHandyGuns2.0.jargunswithoutroses-1.16.5-1.0.9.jarGuns'N'Glory-2.0.jarGuns and Rifes.jarftb-backups-2.1.1.6.jarForgeEndertech-1.16.4-7.1.0.0-build.0075.jarFluxNetworks-1.16.5-6.1.7.12.jarFastWorkbench-1.16.4-4.5.1.jarFastLeafDecay-v25.jarFastFurnace-1.16.4-4.4.0.jarfabric-api-0.35.0+1.16.jarExtraArmor-1.12.1-1.16.5.jarEnderStorage-1.16.4-2.7.1.166-universal.jarEnchantmentDescriptions-1.16.5-7.0.8.jarEnameledArmor-1.16.2-1.0.0.8.jaremeraldtoolsandarmor1.16.x.jarEmeraldArmorAndTools.jarelevatorid-1.16.5-1.7.13.jarDiceMC-TieredArmor-1.16.5-1.1a.jarDefaultOptions_1.16.5-12.2.1.jarDecraftHorseArmor-1.16.5-r1.jarDarkUtilities-1.16.5-8.0.10.jarCyclopsCore-1.16.5-1.11.7.jarCurious Armor Stands-1.16.5-2.1.1.jarcurios-forge-1.16.5-4.0.5.2.jarCucumber-1.16.4-4.1.10.jarCTM-MC1.16.1-1.1.2.6.jarCraftingTweaks_1.16.5-12.2.1.jarCraftableChainmail-1.16.5-1.1.0.jarcraftable_chainmail_1.16.5.jarOresAboveDiamonds-1.16.4-v6.3.3.jarCraftable Saddle and Horse Armors.jarCosmeticArmorReworked-1.16.5-v3a.jarCookingForBlockheads_1.16.5-9.3.2.jarControlling-7.0.0.23.jarcomforts-forge-1.16.5-4.0.0.4.jarColtCosmeticArmorMod-1.2.5.jarCodeChickenLib-1.16.4-3.5.1.408-universal.jarClumps-6.0.0.25.jarcitadel-1.7.1-1.16.5.jarchiselsandbits-0.3.4-RELEASE.jarcarryon-1.16.5-1.15.5.15.jarbuildinggadgets-1.16.5-3.8.0.jarBookshelf-1.16.5-10.1.11.jarBomb and guns.jarBlockArmor-1.16.5-2.6.2.jarBetterMineshafts-Forge-1.16.4-2.0.4.jarBetterHorseArmor-1.16.3-1.0.1.1.jarBetterAdvancements-1.16.5-0.1.0.108.jarBedrock Armor 1.16.5-1.0.2.jarAutoRegLib-1.6-49.jararmor-visibility-2.0.1-forge.jarArmorUp-1.0.5-BETA.jarArmorUnlocked-1.16.3-1.0.1.jararmorunder-mc1.16.5-2.0b11.jararmor-stand-editor-1.1.0.jarArmorPoser-1.16.5-1.0.1.jararmorpointspp-1.16.5-2.0.0.jararmorhotswap-1.16-1.8.jarArmoredElytra-1.0.8.jararmorcurve-2.3.jarAquaculture-1.16.5-2.1.19.jarAppleSkin-mc1.16.2-forge-1.0.14.jarApotheosis-1.16.4-4.6.1.jarAncientGuns_3.2_1.16.4.jarAkashicTome-1.4-16.jar1.7.4.1-1.16.5ATOp.jar[1.16.5] BobLib-0.2.0.jar[1.16.5] Armor Status HUD-1.4.0.jarEmerald armor and tools 1.15.16 v3.jarYungsApi-1.16.4-Forge-6.jaryeni modum.jarxnet-1.16-3.0.13.jarwolveswitharmor-1.1.0-1.16.2.jarWaystones_1.16.5-7.6.2.jarvisiblearmorslots-2.0-1.16.5.jarNeat 1.7-27.jarNaturesCompass-1.16.5-1.9.0.jarMoreOresInONE-1.2_1.16.5.jarmcw-windows-1.0.3-mc1.16.5.jarmcw-bridges-1.0.5-mc1.16.5-4.jarlongfallboots-1.6.0a.jarJustEnoughResources-1.16.5-0.12.1.121.jarjei-1.16.5-7.7.0.106.jarForgeEndertech-1.16.4-7.1.0.0-build.0075.jarextcaves-2.4.jarcurios-forge-1.16.5-4.0.5.2.jarcorpse-1.16.5-1.0.5.jarAdHooks-1.16.4-6.1.5.0-build.0124.jar
    • Dude, then try to click the down arrow near "Open" then select   Java(TM) Platform SE binary then it should work or if it doesn't work then it means you don't have Java or you computer is broken.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.