package openmods.renderer;
import com.google.common.base.Preconditions;
import org.lwjgl.opengl.GL11;
public class ManualDisplayList {
public interface Renderer {
public void render();
}
private int displayList;
private boolean isAllocated;
private boolean isValid;
public boolean isCompiled() {
return isValid;
}
public void render() {
Preconditions.checkState(isValid, "Display list not initialized");
GL11.glCallList(displayList);
}
public void compile(Renderer renderer) {
if (isAllocated) GL11.glDeleteLists(displayList, 1);
displayList = GL11.glGenLists(1);
GL11.glNewList(displayList, GL11.GL_COMPILE);
renderer.render();
GL11.glEndList();
isAllocated = isValid = true;
}
public void invalidate() {
isValid = false;
}
}