Jump to content

Recommended Posts

Posted

Hello!

 

I put together my own FrameBuffer helper class. I want to use it to render shapes to a side if a block.

 

Framebuffer Helper class:

Note that not all methods are yes implemented!

 

  Reveal hidden contents

 

Usage:

I use the FBO in a TileEntitySpecialRenderer to draw to it. After the fbo.unbindFrameBuffer() further rendering is completely broken. I think something is not reset correctly, but I don't know what causes the issue.

 

  Reveal hidden contents

 

I can assure you that my custom 2D rendering calls are working fine. I tried them by directly rendering to the side of the block. I also don't know if something is actually rendered to the FBO because if I want to apply the texture afterwards rendering is messed up.

 

The rendering gets broken in the following way:

  • Water doesn't get rendered while looking at the block
  • Item in hand and hand are not rendered while looking at the block
  • Block outline is not rendered while looking at the block
  • A black band appears on horizon (whole time)

 

Here are some screenshots to visualize the issue:

The block to get rendered is the light shadow in front of the Dispenser to the left of the hole.

 

System Information:

Minecraft 1.8

Forge Version: 11.14.1.1402

Operating System: Debian 8 with Gnome 3 and official Nvidia Drivers

Posted

HI

 

YOu are messing with a pile of the OpenGL settings and not saving/restoring them properly.

 

What's the reason you can't just use the vanilla frame buffer helper?

 

This class is a working example of how you can render to a framebuffer object

https://github.com/TheGreyGhost/SpeedyTools/blob/master/src/main/java/speedytools/clientside/selections/SelectionBlockTextures.java

start from the updateTextures() method...

 

-TGG

  • Thanks 1
Posted

Hi!

 

Thanks for your reply and your great blog about Minecraft architecture and informations!

 

I tried using the vanilla Framebuffer helper, but that lead to the exact same issues as with my own try. I tried making my own helper hoping to find the issue.

 

I will look into your example tomorrow!

Posted

I tried it again with the Minecraft Framebuffer class and with the code in your example. Further rendering still gets broken after I try to render to the Framebuffer.

 

This is how I use it:

 

  Reveal hidden contents

 

Posted

Hi

 

>Thanks for your reply and your great blog about Minecraft architecture and informations!

 

No worries, you're welcome :)

 

Strange symptoms.  I don't know, to be honest.  Some thoughts:

1) You don't need to call unbindFrameBuffer, it is called in deleteFramebuffer() already

2) Do the symptoms remain if you bind the buffer then unbind again immediately without rendering to it?  i.e. perhaps your setColor etc methods are doing something strange - try to narrow it down?

3) If you are changing settings in your setColor , fillCircle etc using the GlStateManager, it caches the settings but doesn't dirty the cache properly, so vanilla can sometimes change the settings through GLStateManager but OpenGL doesn't see it.  Solution is to use GL11 calls directly instead of GLstateManager

4) Some rendering settings are not saved by glPushAttrib(GL_ENABLE_BIT).  Check out the OpenGL docs to see other settings.

You could try doing your setColor, fillRect etc using the Tessellator and worldRenderer - starting simple and building up more complicated.

 

-TGG

 

 

Posted

I finally fixed it! By using the following command I found out, that in the render loop we don't render to framebuffer object 0, but a diffrent one.

GL11.glGetInteger(EXTFramebufferObject.GL_FRAMEBUFFER_BINDING_EXT);

Now before I create the framebuffer or bind it get the "default" id that in need to switch back to when I am finished. This fixes the issue.

 

Now i just have to figure out why the drawn texture is not working as expected... :D

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
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.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • I deleted delightful and all farmers delight addon (just in case) and still i have the error :'(, i need to check mod by mod?
    • I'm developing a Forge mod for Minecraft 1.16.5 to run on CatServer (version 1.16.5-1d8d6313, Forge 36.2.39). My mod needs to get the player's UUID from a ServerPlayerEntity object within a Forge ServerChatEvent handler. When I use serverPlayerEntity.getUUID(), my mod compiles fine, but I get a java.lang.NoSuchMethodError: net.minecraft.entity.player.ServerPlayerEntity.getUUID()Ljava/util/UUID; at runtime. I cannot use serverPlayerEntity.getUniqueID() as it causes a compile error (cannot find symbol). Is there a known issue with this on CatServer, or a recommended way for a Forge mod to reliably get a player's UUID from ServerPlayerEntity in this environment? My goal is to pass this UUID to the LuckPerms API (which is running as a Bukkit plugin and successfully connected via ServicesManager). erorr ChatMod: FMLServerStartedEvent received. Attempting to initialize LuckPerms connection... [22:45:20] [Server thread/INFO]: ⚙️ Початок ініціалізації LuckPerms API через Bukkit Services Manager... [22:45:20] [Server thread/INFO]: ✅ Bukkit ServicesManager успішно отримано. [22:45:20] [Server thread/INFO]: ✅ Реєстрацію сервісу LuckPerms знайдено. [22:45:20] [Server thread/INFO]: ✅ API LuckPerms успішно отримано від Bukkit plugin! [22:45:20] [Server thread/INFO]: Використовується реалізація: me.lucko.luckperms.common.api.LuckPermsApiProvider [22:45:20] [Server thread/INFO]: ✅ LuckPerms API схоже що успішно ініціалізовано через Bukkit Services Manager. [22:45:24] [User Authenticator #1/INFO]: UUID of player Hiklee is 92cd7721-2652-3867-896b-2ceba5b99306 [22:45:25] [Server thread/INFO]: Using new advancement loading for net.minecraft.advancements.PlayerAdvancements@24cb7a68 [22:45:26] [Server thread/INFO]: Hiklee[/127.0.0.1:41122] logged in with entity id 210 at (92.23203876864889, 95.6183020148442, 68.24087802017877) [22:45:28] [Async Chat Thread - #0/INFO]: ✅ Скасовано стандартне відправлення чату! [22:45:28] [Async Chat Thread - #0/ERROR]: Exception caught during firing event: net.minecraft.entity.player.ServerPlayerEntity.getUUID()Ljava/util/UUID; Index: 1 Listeners: 0: NORMAL 1: ASM: class com.example.chatmod.ChatEventHandler onPlayerChat(Lnet/minecraftforge/event/ServerChatEvent;)V java.lang.NoSuchMethodError: net.minecraft.entity.player.ServerPlayerEntity.getUUID()Ljava/util/UUID; at com.example.chatmod.ChatPacketHandler.getPlayerPrefix(ChatPacketHandler.java:46) at com.example.chatmod.ChatEventHandler.onPlayerChat(ChatEventHandler.java:32) at net.minecraftforge.eventbus.ASMEventHandler_1_ChatEventHandler_onPlayerChat_ServerChatEvent.invoke(.dynamic) at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:85) at net.minecraftforge.eventbus.EventBus.post(EventBus.java:303) at net.minecraftforge.eventbus.EventBus.post(EventBus.java:283) at net.minecraftforge.common.ForgeHooks.onServerChatEvent(ForgeHooks.java:493) at net.minecraft.network.play.ServerPlayNetHandler.chat(ServerPlayNetHandler.java:1717) at net.minecraft.network.play.ServerPlayNetHandler.func_244548_c(ServerPlayNetHandler.java:1666) at net.minecraft.network.play.ServerPlayNetHandler.func_147354_a(ServerPlayNetHandler.java:1605) at net.minecraft.network.play.client.CChatMessagePacket.lambda$handle$0(CChatMessagePacket.java:34) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:750
    • Thank you so much for your help, I'll try it as soon as I can. I have a genuine question because I'm not familiar with the matter: Can a recipe error cause something as serious as the AMD error?
    • When i try to launch my modpack, the instance crashes and this is sent to the logs: Time: 2025-05-27 23:07:18 Description: Rendering overlay Below is the full log: https://mclo.gs/jP5G2EH
    • Make a test without delightful
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.