Je suis passé à l'utilisation d'un GLJPanel d'un GLCanvas pour éviter certains problèmes de scintillement, mais cela a créé plusieurs conséquences inattendues. D'après ce que j'ai glané jusqu'ici, GLJPanel appelle GLEventListener.init() chaque fois qu'il est redimensionné, ce qui réinitialise différentes fonctions OpenGL que j'ai activées dans init() (test de profondeur, éclairage, etc ...) si J'ai de la chance, ou efface complètement mon modèle si je ne le suis pas.Redimensionner un GLJPanel avec JOGL fait disparaître mon modèle
J'ai essayé de le déboguer mais je ne suis pas capable de corriger ce comportement. Ceci est ma fonction init():
gl.glShadeModel(GL.GL_SMOOTH);
gl.glEnable(GL.GL_DEPTH_TEST);
gl.glDepthFunc(GL.GL_LEQUAL);
gl.glDepthRange(zNear, zFar);
gl.glDisable(GL.GL_LINE_SMOOTH);
gl.glEnable(GL.GL_NORMALIZE);
gl.glEnable(GL.GL_BLEND);
gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
// set up the background color
gl.glClearColor(((float)backColor.getRed ()/255.0f),
((float)backColor.getGreen()/255.0f),
((float)backColor.getBlue()/255.0f), 1.0f);
gl.glEnable (GL.GL_LIGHTING);
gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, Constants.AMBIENT_LIGHT, 0);
gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, Constants.DIFFUSE_LIGHT, 0);
gl.glEnable (GL.GL_LIGHT0);
gl.glTexEnvf(GL.GL_TEXTURE_ENV, GL.GL_TEXTURE_ENV_MODE, GL.GL_MODULATE);
gl.glHint(GL.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST);
// code to generate model
Est-il possible autour de cette autre que d'enlever tout de init(), ajoutant à ma fonction d'affichage()? Étant donné le comportement de init() et reshape() pour GLJPanel, je ne suis pas sûr que cela le corrigera non plus.
Cher dieu, je pense que ça pourrait être, viewport est défini dans ma fonction Display and Reshape, donc je suppose que je n'ai pas pensé à l'inclure dans ma fonction init(). – badcodenotreat