Open JennyDoll opened 2 months ago
I mean, both mods are currently fairly important for the pack? Even if we removed one of the mods, it would presumably just corrupt existing worlds.
There's a config option for LT in littletiles-client.json
that toggles the warning message off or on. Turning it off by default looks like a quick fix.
That config file isn't shipped with the modpack right now. I'm not in any way accustomed with modpack development - can that be done?
Here is my input to this issue: VBO on/off isn't some magic toggle that turns all vbo usage off and if there is something that only works VBO off, then that needs to be made to work with VBO. Next is rant/history lesson of why so:
First basics: Direct/Immediate/Fixed Function pipeline: GL.Begin, GL.End and GL.Flush and other similar functions that don't mix with deferred pipeline.
Deferred pipeline rendering: VAO+VBO + GLSL shader programs and swapbuffer.
Also way opengl works, as long platform library exposes new extensions, you can create archaic opengl core context and still use OpenGL 4.6 features in it, but you need to query them and this is essentially how most of mods that know what the hell they should be doing are doing it. And to other way you can use all old stuff as long its not removed like direct/fixed rendering was, so you can use 1.1 stuff in 4.6 context.
1997: OpenGL 1.0 came out, but this version was bit early and GLSL shading wasn't thing at that point and all was done with fixed pipeline. Problem with fixed pipeline is that its very inflexible and pretty much most of attention to it was diverted to build more flexible solution. 2002: OpenGL 1.4 First iteration of GLSL was added as optional extensions. 2003: VBO was introduced in opengl 1.5, 2004: OpenGL 2.0 came out and introduced GLSL into core but it was still bit uncooked at this point. 2008: OpenGL 3.0 came out and all related to fixed/direct pipeline rendering was marked deprecated. 2009: OpenGL 3.1 came out and everything marked deprecated in 3.0 was removed. This version also introduced GLSL 1.4, which brought instancing, texture and uniform buffer objects.
This is where anything written after this point and anything under production at this point should use or converted to use deferred rendering, meaning VAO+VBO + shaders. But hurrdurr, nothing is ever ideal.
2011: OpenGL 4.2 and GLSL 4.20 come out 2011: Minecraft comes out and is made using openGL 2.0 context and digs out zombie direct/fixed pipeline from shallow grave it was in and teaches lot of people bad habits as result. 2011-2021: Minecraft modding mixes direct and deferred rendering into unholy mess. 2014: Microsoft buys Mojang. My guess is that this is point after which they started to fix/refactor rendering to use deferred pipeline. 2017: OpenGL 4.6 comes out and is last OpenGL version since then . 2021: Minecraft 1.17 comes out and finally uses OpenGL 3.2 context, meaning all direct rendering shit that should had already been dead for 12 years at that point is finally killed off.
So basically this won't even be problem in minecraft 1.17 and after. But anyways, why is it problem here... Some mod that uses direct/fixed pipeline rendering doesn't unbind vertex buffers before starting it. In other words under hood openGL whines that it cannot start direct/fixed rendering block because there are unknown buffers binded, so any mod that uses direct/fixed rendering should unbind buffers before doing its stuff. More accurately it's trying to use glEnableClientState(GL_VERTEX_ARRAY) and glVertexPointer(), which are fixed pipeline functions from openGL 1.1. OpenGL 3.0 spec Appendix E starting at page 405 shows all that was deprecated and eventually removed in 3.1
TL;DR: Anything that doesn't use VBO is garbage since 2009. And Minecraft is badly made software, specially before 1.17
basically this exact case: http://forum.lwjgl.org/index.php?topic=3322.0 And because error is badly worded as "Cannot use Buffers when Array Buffer Object is enabled". It doesn't mean that VBO is some global state that prohibits things, it means that driver cannot operate Buffers, because there is active VBO bind already on and that is what needs to be resolved as in local state.
Description of the Bug
See title. It was fine for a minute or so when I first got it, but then the game crashed once, and ever since even having it in your hand leads to an instant CTD. This can be fixed by turning the VBO off. That leads to the LittleTiles warning message being shown in the top-left part of your screen; the modpack telling you to turn the VBOs on only to then eventually crash the game is not good.
Looking at issues on the IR github, the developers over there seem to be aware of the issue.
I'm not sure whether any steps to fix it were taken. This crash is reproducible with a clean installation with IR only, so this is a problem on their side.
Nevertheless, having mods contradict each other like that is a modpack issue, so I'm reporting it here.
Reproduction
Version
Latest (e5eab85) prerelease
Relevant log output