Skip to content

Commit 5331298

Browse files
committed
fix & format
1 parent 80bd53e commit 5331298

File tree

2 files changed

+34
-21
lines changed

2 files changed

+34
-21
lines changed

src/main/java/gregtech/client/renderer/scene/VBOWorldSceneRenderer.java

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,23 @@
55
import net.minecraft.client.renderer.texture.TextureMap;
66
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
77
import net.minecraft.client.renderer.vertex.VertexBuffer;
8+
import net.minecraft.client.renderer.vertex.VertexFormatElement;
89
import net.minecraft.util.BlockRenderLayer;
910
import net.minecraft.util.math.BlockPos;
1011
import net.minecraft.world.World;
1112
import net.minecraftforge.client.ForgeHooksClient;
1213
import net.minecraftforge.client.MinecraftForgeClient;
1314
import net.minecraftforge.fml.relauncher.Side;
1415
import net.minecraftforge.fml.relauncher.SideOnly;
16+
1517
import org.lwjgl.opengl.GL11;
1618

17-
import java.nio.ByteBuffer;
1819
import java.util.Collection;
1920

2021
@SideOnly(Side.CLIENT)
2122
public class VBOWorldSceneRenderer extends ImmediateWorldSceneRenderer {
2223

23-
protected final VertexBuffer[] vbos = new VertexBuffer[BlockRenderLayer.values().length];
24+
protected static final VertexBuffer[] VBOS = new VertexBuffer[BlockRenderLayer.values().length];
2425
protected boolean isDirty = true;
2526

2627
public VBOWorldSceneRenderer(World world) {
@@ -33,17 +34,17 @@ private void uploadVBO() {
3334
try { // render block in each layer
3435
for (BlockRenderLayer layer : BlockRenderLayer.values()) {
3536

36-
var vbo = this.vbos[layer.ordinal()] = new VertexBuffer(DefaultVertexFormats.BLOCK);
37-
3837
renderBlockLayer(layer);
3938

4039
// Get the buffer again
4140
BufferBuilder buffer = Tessellator.getInstance().getBuffer();
4241
buffer.finishDrawing();
4342
buffer.reset();
4443

45-
ByteBuffer data = buffer.getByteBuffer();
46-
vbo.bufferData(data);
44+
int i = layer.ordinal();
45+
var vbo = VBOS[i];
46+
if (vbo == null) vbo = VBOS[i] = new VertexBuffer(DefaultVertexFormats.BLOCK);
47+
vbo.bufferData(buffer.getByteBuffer());
4748
}
4849
} finally {
4950
ForgeHooksClient.setRenderLayer(oldRenderLayer);
@@ -80,19 +81,20 @@ protected void drawWorld() {
8081

8182
GlStateManager.pushMatrix();
8283
{
83-
var vbo = this.vbos[layer.ordinal()];
84+
int i = layer.ordinal();
85+
var vbo = VBOS[i];
8486
vbo.bindBuffer();
85-
setupClientStates();
87+
enableClientStates();
8688
setupArrayPointers();
8789
vbo.drawArrays(GL11.GL_QUADS);
88-
resetClientStates();
90+
disableClientStates();
8991
vbo.unbindBuffer();
9092
}
9193
GlStateManager.popMatrix();
9294
}
9395
ForgeHooksClient.setRenderLayer(oldRenderLayer);
9496

95-
renderTESR(); // Handles TileEntities
97+
renderTileEntities(); // Handle TileEntities
9698

9799
GlStateManager.shadeModel(GL11.GL_SMOOTH);
98100
RenderHelper.enableStandardItemLighting();
@@ -111,7 +113,7 @@ public WorldSceneRenderer addRenderedBlocks(Collection<BlockPos> blocks) {
111113
return super.addRenderedBlocks(blocks);
112114
}
113115

114-
protected void setupClientStates() {
116+
protected void enableClientStates() {
115117
GlStateManager.glEnableClientState(GL11.GL_VERTEX_ARRAY);
116118
OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
117119
GlStateManager.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
@@ -121,11 +123,19 @@ protected void setupClientStates() {
121123
GlStateManager.glEnableClientState(GL11.GL_COLOR_ARRAY);
122124
}
123125

124-
protected void resetClientStates() {
125-
GlStateManager.glDisableClientState(GL11.GL_VERTEX_ARRAY);
126-
GlStateManager.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
127-
GlStateManager.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
128-
GlStateManager.glDisableClientState(GL11.GL_COLOR_ARRAY);
126+
protected void disableClientStates() {
127+
for (VertexFormatElement element : DefaultVertexFormats.BLOCK.getElements()) {
128+
switch (element.getUsage()) {
129+
case POSITION -> GlStateManager.glDisableClientState(GL11.GL_VERTEX_ARRAY);
130+
case COLOR -> GlStateManager.glDisableClientState(GL11.GL_COLOR_ARRAY);
131+
case UV -> {
132+
OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit + element.getIndex());
133+
GlStateManager.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
134+
OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
135+
}
136+
default -> {}
137+
}
138+
}
129139
}
130140

131141
protected void setupArrayPointers() {

src/main/java/gregtech/client/renderer/scene/WorldSceneRenderer.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package gregtech.client.renderer.scene;
22

3-
import codechicken.lib.vec.Vector3;
43
import gregtech.api.util.Position;
54
import gregtech.api.util.PositionedRect;
65
import gregtech.api.util.Size;
76
import gregtech.client.utils.RenderUtil;
8-
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
7+
98
import net.minecraft.block.Block;
109
import net.minecraft.block.state.IBlockState;
1110
import net.minecraft.client.Minecraft;
@@ -24,18 +23,22 @@
2423
import net.minecraftforge.client.MinecraftForgeClient;
2524
import net.minecraftforge.fml.relauncher.Side;
2625
import net.minecraftforge.fml.relauncher.SideOnly;
26+
27+
import codechicken.lib.vec.Vector3;
28+
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
2729
import org.jetbrains.annotations.Nullable;
2830
import org.lwjgl.opengl.GL11;
2931
import org.lwjgl.util.glu.GLU;
3032

31-
import javax.vecmath.Vector3f;
3233
import java.nio.ByteBuffer;
3334
import java.nio.ByteOrder;
3435
import java.nio.FloatBuffer;
3536
import java.nio.IntBuffer;
3637
import java.util.Collection;
3738
import java.util.function.Consumer;
3839

40+
import javax.vecmath.Vector3f;
41+
3942
/**
4043
* Created with IntelliJ IDEA.
4144
*
@@ -244,7 +247,7 @@ protected void drawWorld() {
244247
ForgeHooksClient.setRenderLayer(oldRenderLayer);
245248
}
246249

247-
renderTESR(); // Handles TileEntities
250+
renderTileEntities(); // Handle TileEntities
248251

249252
GlStateManager.enableDepth();
250253
GlStateManager.disableBlend();
@@ -275,7 +278,7 @@ protected void renderBlockLayer(BlockRenderLayer layer) {
275278
}
276279
}
277280

278-
protected void renderTESR() {
281+
protected void renderTileEntities() {
279282
RenderHelper.enableStandardItemLighting();
280283
for (int pass = 0; pass < 2; pass++) {
281284
ForgeHooksClient.setRenderPass(pass);

0 commit comments

Comments
 (0)