1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| import [...]
public class SimpleScene implements GLEventListener {
private int list=0;
public static void main(String[] args) {
GLProfile glp = GLProfile.getDefault();
GLCapabilities caps = new GLCapabilities(glp);
GLCanvas canvas = new GLCanvas(caps);
Frame frame = new Frame();
frame.add(canvas);
[...]
canvas.addGLEventListener(new SimpleScene());
FPSAnimator animator = new FPSAnimator(canvas, 60);
animator.add(canvas);
animator.start();
}
@Override
public void display(GLAutoDrawable drawable) {
render(drawable);
}
@Override
public void init(GLAutoDrawable drawable) {
//on met tout a 0 et on initialise la liste
GL2 gl = drawable.getGL().getGL2();
gl.glLoadIdentity();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
list = genlist(gl);
gl.glShadeModel( GL2.GL_FLAT );
}
private void render(GLAutoDrawable drawable) {
//on affiche le contenu de la liste et on le fait tourner
GL2 gl = drawable.getGL().getGL2();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glCallList( list );
gl.glRotatef(0.2f, 0.0f, 0.0f, 1.0f);
}
//om genere la liste de 1 000 000 rectangles (nb^2)
private int genlist(GL2 gl){
float nb = 1000;
float x = -1;
float y = -1;
float fullPitch = 2/nb;
float smalPitch = fullPitch/20;
float largePitch = smalPitch*19;
int list;
list = gl.glGenLists( 1 );
gl.glNewList( list, GL2.GL_COMPILE );
gl.glColor3f(1, 1, 1);
for(int i=0;i<nb;i++){
for(int j=0;j<nb;j++){
gl.glBegin(GL2.GL_QUADS);
gl.glVertex2d(x+smalPitch,y+smalPitch);
gl.glVertex2d(x+smalPitch,y+largePitch);
gl.glVertex2d(x+largePitch,y+largePitch);
gl.glVertex2d(x+largePitch,y+smalPitch);
gl.glEnd();
x=x+fullPitch;
}
y=y+fullPitch;
x = -1;
}
gl.glEndList();
return list;
}
} |
Partager