1 /* 2 * To change this template, choose Tools | Templates 3 * and open the template in the editor. 4 */ 5 6 package nl.tudelft.goal.ut2004.visualizer.timeline.map; 7 8 import java.util.List; 9 import javax.media.opengl.GL; 10 11 import nl.tudelft.goal.ut2004.visualizer.map.BlendTriangle; 12 13 14 15 /** 16 * This is a subrenderer, it's job is to render some stuff. 17 * Basically I had few {@link GLEventListener}s and there were troubles 18 * with using them directly (order of rendering), so I have now only these 19 * subrenderes that are part of {@link GLRendererCollection}. 20 * 21 * @param <T> Class of object this renderer draws. 22 * @author Honza 23 */ 24 public interface ISubGLRenderer<T> { 25 /** 26 * Here should be done preparation for rendering (e.g. generation of display 27 * lists from massive data) 28 * @param gl 29 */ 30 public void prepare(GL gl); 31 32 /** 33 * Display stuff you want to. Assume that settings have already been set in 34 * {@link GLRendererCollection} 35 * @param gl 36 */ 37 public void render(GL gl); 38 39 /** 40 * Return object this renderer draws. 41 * 42 * Because objects we want to draw can change rapidly, we have to remove and 43 * add subrenderers based on passed objects (renderer R draws object A, now 44 * we don't want to draw A anymore, we have to go through subrenderers to find 45 * which ones draws it). 46 * @return Object this renderer draws. 47 */ 48 public T getObject(); 49 50 /** 51 * Because blending phase of rendering can be done only after all opaque 52 * objects has been drawn and because polys has to be back-to-front ordered 53 * every renderer will return list of its blended triangles so final 54 * renderer can sort all blended triangles from all blended renderers and 55 * do it correctly. 56 * @return List of blended triangles this renderer wants to render. Empty collection 57 * if no such exists. 58 */ 59 public List<BlendTriangle> getBlendedTris(); 60 }