Ach, ich erinnere mich an den Bug, ich hab es getestet und den Bug behoben, eigentlich sollte es wider Funktionieren.
Das große Strukturen laggen (wenig FPS) kann ich leider nicht beeinflussen (außer durch die RBO Funktion).
Für die es interesiert, hier ein Erklärung warum:
In der 1.12 und früheren Versionen funktionierte das Rendern so:
Es gab eine GLStateManager - Klasse die das gesamte rendern gesteuert hat.
Man kann einfach jeder zeit überall mit
Javascript:
GLStateManager.pushMatrix();
GLStateManager.begin(IVertexFormats.QUADS);
GLStateManager.vertex(0, 0);
GLStateManager.vertex(1, 0);
GLStateManager.vertex(1, 1);
GLStateManager.vertex(0, 1);
GLStateManager.end();
GLStateManager.popMatrix();
ein Simples Viereck rendern.
In der 1.13 und neueren Versionen funktioniert es so:
Es gibt eine MatrixStack - Klasse die beim begin jedes Ticks eine Instanz von sich erzeugt.
danach werden bestimte "Funktionen" aufgerufen (z.B das Rendern alle Blöcke, oder das Rendern das aktuellen GUIs).
und es wird immer die MatrixStack Instanz an diese Funktion übergeben.
Der aufbau bleibt gleich wie oben, nur wird GLStateManager, der static ist (und somit von überall genutzt werden kann) durch
den MatrixStack ersetzt, von dem es eine feste Instanz gibt, daher sieht der Code so aus:
Code:
//Feste MatrixStack instanz die vom Spiel übergeben wird:
MatrixStack matrixStackIn;
matrixStackIn.push();
matrixStackIn.vertex(0, 0);
matrixStackIn.vertex(1, 0);
matrixStackIn.vertex(1, 1);
matrixStackIn.vertex(0, 1);
matrixStackIn.end();
matrixStackIn.pop();
Da man nun zum Rendern diese Instanz benötigt, kann ich in meinem render Code nicht auf die Normale weise
rendern, da ich diese nicht zur Verfügung hab
(ich rendere indem ich das "onWorldRenderEvent" abfange, und noch etwas "dazu rendere", aber da wird der MatrixStack nicht übergeben)
muss ich "manuell" Rendern, das laggt dann ziemlich, weil zusätzlich zu dem MaterixStack von MC noch für jeden Block den ich Rendere mein "eigener MatrixStack" hinzu kommt.