| 12
 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