Fix preview trying to read argb when there is only rgb

This commit is contained in:
johni0702
2015-07-16 21:02:06 +02:00
parent e29b6ec9a0
commit 5dd974cc9f

View File

@@ -19,7 +19,6 @@ import org.lwjgl.util.ReadableDimension;
import java.awt.*; import java.awt.*;
import java.io.IOException; import java.io.IOException;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import static net.minecraft.client.renderer.GlStateManager.bindTexture; import static net.minecraft.client.renderer.GlStateManager.bindTexture;
import static net.minecraft.client.renderer.GlStateManager.color; import static net.minecraft.client.renderer.GlStateManager.color;
@@ -239,20 +238,13 @@ public class GuiVideoRenderer extends GuiScreen {
ByteBuffer buffer = frame.getByteBuffer(); ByteBuffer buffer = frame.getByteBuffer();
buffer.mark(); buffer.mark();
synchronized (this) { synchronized (this) {
swapEndianness(buffer); int[] data = previewTexture.getTextureData();
buffer.asIntBuffer().get(previewTexture.getTextureData()); for (int i = 0; i < data.length; i++) {
swapEndianness(buffer); data[i] = 0xff << 24 | (buffer.get() & 0xff) << 16 | (buffer.get() & 0xff) << 8 | (buffer.get() & 0xff);
}
previewTextureDirty = true; previewTextureDirty = true;
} }
buffer.reset(); buffer.reset();
} }
} }
private void swapEndianness(ByteBuffer buffer) {
if (buffer.order() == ByteOrder.BIG_ENDIAN) {
buffer.order(ByteOrder.LITTLE_ENDIAN);
} else {
buffer.order(ByteOrder.BIG_ENDIAN);
}
}
} }