1 package com.irtimaled.bbor.client.renderers;
3 import com.irtimaled.bbor.client.Camera;
4 import net.minecraft.client.renderer.BufferBuilder;
5 import net.minecraft.client.renderer.Tessellator;
6 import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
7 import net.minecraft.client.renderer.vertex.VertexFormat;
8 import org.lwjgl.opengl.GL11;
12 public class Renderer {
13 private final int glMode;
15 static Renderer startLines() {
16 return new Renderer(GL11.GL_LINES, DefaultVertexFormats.POSITION_COLOR);
19 static Renderer startLineLoop() {
20 return new Renderer(GL11.GL_LINE_LOOP, DefaultVertexFormats.POSITION_COLOR);
23 static Renderer startQuads() {
24 return new Renderer(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR);
27 static Renderer startPoints() {
28 return new Renderer(GL11.GL_POINTS, DefaultVertexFormats.POSITION_COLOR);
31 public static Renderer startTextured() {
32 return new Renderer(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR);
35 private static final Tessellator tessellator = new Tessellator(2097152);
36 private static final BufferBuilder bufferBuilder = tessellator.getBuffer();
43 private Renderer(int glMode, VertexFormat vertexFormat) {
44 bufferBuilder.begin(glMode, vertexFormat);
48 public Renderer setColor(Color color) {
49 return setColor(color.getRed(), color.getGreen(), color.getBlue())
50 .setAlpha(color.getAlpha());
53 public Renderer setColor(int red, int green, int blue) {
60 public Renderer setAlpha(int alpha) {
65 Renderer addPoint(OffsetPoint point) {
66 return addPoint(point.getX(), point.getY(), point.getZ());
69 public Renderer addPoints(OffsetPoint[] points) {
70 Renderer renderer = this;
71 for (OffsetPoint point : points) {
72 renderer = renderer.addPoint(point);
77 Renderer addPoint(double x, double y, double z) {
84 public Renderer addPoint(double x, double y, double z, double u, double v) {
92 public void render() {
93 if (glMode == GL11.GL_QUADS) {
94 bufferBuilder.sortVertexData((float) Camera.getX(), (float) Camera.getY(), (float) Camera.getZ());
99 private void pos(double x, double y, double z) {
100 bufferBuilder.pos(x, y, z);
103 private void tex(double u, double v) {
104 bufferBuilder.tex(u, v);
107 private void color() {
108 bufferBuilder.color(red, green, blue, alpha);
112 bufferBuilder.endVertex();