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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
package test;
//Importer les fonctions openGL
import javax.media.opengl.*;
import java.lang.Math;
import javax.media.opengl.glu.*;
//Importer les bibliotheque graphique
import java.awt.event.*;
public class GLSimpleFenetre implements GLEventListener, KeyListener {
Dessin dessin;
public GLSimpleFenetre(Dessin dessin){
this.dessin = dessin;
}
//La méthode init est appeler par le GLAutoDrawable dès que le
//contexte OpenGL a été initialiser
public void init(GLAutoDrawable gLDrawable){
final GL gl = gLDrawable.getGL();
//Type de rendu, pour ce cas-là on utilise le flat shading
gl.glShadeModel(GL.GL_SMOOTH);
//Couleur de fond (rouge, vert, bleu, alpha) en float
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.5f);
//On assigne l'objet courant a un KeyListener
gLDrawable.addKeyListener(this);
}
public void display(GLAutoDrawable gLDrawable){
System.out.println("bonsoirs");
//GL contient toutes les methodes de base d'openGL
final GL gl = gLDrawable.getGL();
//Nettoyage des buffers de couleurs activé et de profondeur
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
//Remplace la matrice courante par la matrice identité
gl.glLoadIdentity();
gl.glTranslatef(-1.5f,0.0f,-6.0f);
//On appelle la methode qui va dessiner un triangle
dessin.triangle(gl);
gl.glFlush();
}
//méthode displayChanged(GLAutoDrawable,boolean,boolean) E
//Elle est appeler losrqu'il y a un un changement du mode d'affichage
//(resolution,driver,peripherique video, nombres de couleurs,...)
public void displayChanged(GLAutoDrawable gLDrawable, boolean modeChanged, boolean deviceChanged){}
//méthode reshape(GLAutoDrawable,int coordonnee x,int coordonnee y,int largeur,int hauteur)
//Elle est appeler par le GLAutoDrawable a chaque reaffichage du composant apres aoir été redimensionnée
public void reshape(GLAutoDrawable gLDrawable,int x,int y, int largeur, int hauteur){
final GL gl = gLDrawable.getGL();
//GLU contient des fonctionnalité supplémentaire
final GLU glu = new GLU();
//On evite d'avoir une division par 0 pour le calcul de "l'aspect ratio"
if (hauteur <= 0)
hauteur=1;
//on donne une valeur final a l'aspect sans oublier de caster hauteur et largeur
final float aspect = (float)largeur/(float)hauteur;
//on vide la matrice courante
gl.glMatrixMode(GL.GL_PROJECTION);
gl.glLoadIdentity();
//Vue perspective, les parametre sont (angle en degres, aspect,
//distance utilisateur-plan focal, distance utilisateur-plan objet)
glu.gluPerspective(45.0f, aspect, 1.0, 20.0);
//On reset la pile MODELVIEW
gl.glMatrixMode(GL.GL_MODELVIEW);
gl.glLoadIdentity();
}
//appeler lorsqu'une touche est pressé
public void keyPressed(KeyEvent e){
//si la touche taper est echap alors on sort de l'application
if(e.getKeyCode() == KeyEvent.VK_ESCAPE)
System.exit(0);
}
//Appeler losqu'une touche est relachée
public void keyTyped(KeyEvent e){}
//Appeler lorsqu'une touche a étét taper
public void keyReleased(KeyEvent e){}
} |
Partager