package org.newdawn.slick.opengl.renderer; /** * The static holder for the current GL implementation. Note that this * renderer can only be set before the game has been started. * * @author kevin */ public class Renderer { /** The indicator for immediate mode renderering (the default) */ public static final int IMMEDIATE_RENDERER = 1; /** The indicator for vertex array based rendering */ public static final int VERTEX_ARRAY_RENDERER = 2; /** The indicator for direct GL line renderer (the default) */ public static final int DEFAULT_LINE_STRIP_RENDERER = 3; /** The indicator for consistant quad based lines */ public static final int QUAD_BASED_LINE_STRIP_RENDERER = 4; /** The renderer in use */ private static SGL renderer = new ImmediateModeOGLRenderer(); /** The line strip renderer to use */ private static LineStripRenderer lineStripRenderer = new DefaultLineStripRenderer(); /** * Set the renderer to one of the known types * * @param type The type of renderer to use */ public static void setRenderer(int type) { switch (type) { case IMMEDIATE_RENDERER: setRenderer(new ImmediateModeOGLRenderer()); return; case VERTEX_ARRAY_RENDERER: setRenderer(new VAOGLRenderer()); return; } throw new RuntimeException("Unknown renderer type: "+type); } /** * Set the line strip renderer to one of the known types * * @param type The type of renderer to use */ public static void setLineStripRenderer(int type) { switch (type) { case DEFAULT_LINE_STRIP_RENDERER: setLineStripRenderer(new DefaultLineStripRenderer()); return; case QUAD_BASED_LINE_STRIP_RENDERER: setLineStripRenderer(new QuadBasedLineStripRenderer()); return; } throw new RuntimeException("Unknown line strip renderer type: "+type); } /** * Set the line strip renderer to be used globally * * @param renderer The line strip renderer to be used */ public static void setLineStripRenderer(LineStripRenderer renderer) { lineStripRenderer = renderer; } /** * Set the renderer to be used * * @param r The renderer to be used */ public static void setRenderer(SGL r) { renderer = r; } /** * Get the renderer to be used when accessing GL * * @return The renderer to be used when accessing GL */ public static SGL get() { return renderer; } /** * Get the line strip renderer to use * * @return The line strip renderer to use */ public static LineStripRenderer getLineStripRenderer() { return lineStripRenderer; } }