IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

[JOGL] 2.0 rc8 : crash JVM à la fermeture


Sujet :

OpenGL

  1. #1
    Membre chevronné
    Avatar de tails
    Homme Profil pro
    Inscrit en
    Novembre 2003
    Messages
    799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 799
    Points : 2 148
    Points
    2 148
    Billets dans le blog
    15
    Par défaut [JOGL] 2.0 rc8 : crash JVM à la fermeture
    Bonjour à tous

    Je rencontre un soucis, je l'espère, mineur avec la librairie JOGL 2.0 rc8 (du 2 mai 2012).

    J'ai crée avec succès une petite application affichant un simple cube statique sur fond noir (j'ai joint une capture d'écran au présent message) : en effet, je n'ai eu aucune difficulté à configurer l'EDI Eclipse Indigo, et sur mon Debian Squeeze 64 bits.

    Le problème vient quand je ferme l'application : de temps en temps j'obtiens un crash de la JVM, dont j'ai fourni le dernier log obtenu en pièce jointe.

    TestJOGL.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    package com.gmail.bernabe.laurent.j2se.tet_jogl;
     
    import java.awt.Frame;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
     
    import com.jogamp.opengl.util.Animator;
     
    public class TestJOGL extends Frame {
     
    	public TestJOGL(){
    		setSize(500,500);
    		setTitle("Jogl test");
     
    		MyGlComponent glComponent = new MyGlComponent();
    		add(glComponent);
    		final Animator animator = new Animator(glComponent);
    		addWindowListener(new WindowAdapter() {
     
    			@Override
    			public void windowClosing(WindowEvent e) {
    				animator.stop();
    				System.exit(0);
    			}
     
    		});
     
     
    		pack();
    		setLocationRelativeTo(null);
     
    		animator.start();
    	}
     
    	public static void main(String[] args) {
    		new TestJOGL().setVisible(true);
    	}
     
    	private static final long serialVersionUID = 5395013619085104524L;
     
     
    }
    MyGlComponent.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    package com.gmail.bernabe.laurent.j2se.tet_jogl;
     
    import javax.media.opengl.GL2;
    import javax.media.opengl.GLAutoDrawable;
    import javax.media.opengl.GLEventListener;
    import javax.media.opengl.awt.GLCanvas;
    import javax.media.opengl.glu.GLU;
    import javax.media.opengl.glu.gl2.GLUgl2;
     
    public class MyGlComponent extends GLCanvas implements GLEventListener {
     
    	public MyGlComponent(){
    		addGLEventListener(this);
    	}
     
    	@Override
    	public void init(GLAutoDrawable drawable) {
    		GL2 gl = drawable.getGL().getGL2();
    		gl.glEnable(GL2.GL_DEPTH_TEST);
    		gl.glClearDepth(1.0);
    		glu = GLUgl2.createGLU();
    	}
     
    	@Override
    	public void dispose(GLAutoDrawable drawable) {
     
    	}
     
    	@Override
    	public void display(GLAutoDrawable drawable) {
    		GL2 gl = drawable.getGL().getGL2();
    		gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT);
    		gl.glLoadIdentity();
     
    		glu.gluLookAt(
    				0f, 0f, 6f,
    				0f, 0f, 0f,
    				0f, 1f, 0f);
     
    		GLCube.draw(gl);
     
    		gl.glRotatef(currentAngle, 0f, 1f, 0f);
    		currentAngle += 0.15f;
    		currentAngle %= 360f;
    	}
     
    	@Override
    	public void reshape(GLAutoDrawable drawable, int x, int y, int width,
    			int height) {
    		GL2 gl = drawable.getGL().getGL2();
    		gl.glViewport(0, 0, width, height);
    		gl.glMatrixMode(GL2.GL_PROJECTION);
    		gl.glLoadIdentity();
    		glu.gluPerspective(60f, ((float) width)/height, 0.1f, 10f);
    		gl.glMatrixMode(GL2.GL_MODELVIEW);
    	}
     
    	private GLU glu = new GLUgl2();
    	private static final long serialVersionUID = 3439571444867931066L;
     
    	private float currentAngle = 0f;
     
    }
    GLCube.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    package com.gmail.bernabe.laurent.j2se.tet_jogl;
     
    import javax.media.opengl.GL2;
     
    public class GLCube {
     
    	public static void draw(GL2 gl){
     
    		gl.glBegin(GL2.GL_QUADS);
     
    		gl.glColor3ub((byte) 255, (byte) 255, (byte) 0);
    		gl.glVertex3f(-1f, -1f, +1f);
    		gl.glVertex3f(+1f, -1f, +1f);
    		gl.glVertex3f(+1f, +1f, +1f);
    		gl.glVertex3f(-1f, +1f, +1f);
     
    		gl.glColor3ub((byte) 255, (byte) 255, (byte) 255);
    		gl.glVertex3f(-1f, +1f, -1f);
    		gl.glVertex3f(-1f, +1f, +1f);
    		gl.glVertex3f(+1f, +1f, +1f);
    		gl.glVertex3f(+1f, +1f, -1f);
     
    		gl.glColor3ub((byte) 0, (byte) 255, (byte) 0);
    		gl.glVertex3f(+1f, -1f, +1f);
    		gl.glVertex3f(+1f, -1f, -1f);
    		gl.glVertex3f(+1f, +1f, +1f);
    		gl.glVertex3f(+1f, +1f, -1f);
     
    		gl.glColor3ub((byte) 0, (byte) 0, (byte) 255);
    		gl.glVertex3f(-1f, -1f, -1f);
    		gl.glVertex3f(-1f, +1f, -1f);
    		gl.glVertex3f(+1f, +1f, -1f);
    		gl.glVertex3f(+1f, -1f, -1f);
     
    		gl.glColor3ub((byte) 255, (byte) 0, (byte) 255);
    		gl.glVertex3f(-1f, -1f, -1f);
    		gl.glVertex3f(+1f, -1f, -1f);
    		gl.glVertex3f(+1f, -1f, +1f);
    		gl.glVertex3f(-1f, -1f, +1f);
     
    		gl.glColor3ub((byte) 255, (byte) 128, (byte) 0);
    		gl.glVertex3f(-1f, -1f, -1f);
    		gl.glVertex3f(-1f, -1f, +1f);
    		gl.glVertex3f(-1f, +1f, +1f);
    		gl.glVertex3f(-1f, +1f, -1f);
     
    		gl.glEnd();
     
     
    	}
     
    }
    Les fichiers de code sont aussi fournis en pièce jointe.

    Je pense que le problème vient du fait que j'appelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    animator.close();
    System.exit(0);
    dans le WindowListener, méthode onClosing(), entrainant sans doute une fermeture précoce de l'application.

    Les essais suivants n'ont pas non plus résolu le problème
    • Appeler les deux méthodes dans un nouveau Thread
    • Appeler les deux méthodes dans un Runnable anonyme et passer le tout à SwingUtilities.invokeLater()


    Je vous remercie d'avance
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Crash JVM sur cluster
    Par pverley dans le forum Général Java
    Réponses: 10
    Dernier message: 30/06/2011, 15h36
  2. Crash jvm / JNI
    Par tich29 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 27/05/2011, 13h55
  3. Récupération des crash JVM
    Par barbiche dans le forum Langage
    Réponses: 4
    Dernier message: 16/03/2009, 22h49
  4. [DEBUTANT] Crash JVM : Unexpected error
    Par foimpou dans le forum Langage
    Réponses: 5
    Dernier message: 03/04/2007, 11h40
  5. Toolkit.getDefaultToolkit() => crash JVM
    Par Tibo dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 19/05/2006, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo