[JOGL] Problème de multi-thread avec les VBO
Bonjour,
J'utilise JOGL (java se7)
J'arrive à charger correctement un objet à partir d'un .obj et de l'afficher avec les VBO. Tout marche bien jusque là avec un affichage à l'aide de fragment et vertex shader.
Maintenant, je cherche à charger plusieurs objets en même temps, l'ennui, c'est que j'ai besoin du contexte OpenGL. Lorsque j'utilise du multi-thread pour charger mes fichiers .obj, je vérifie qu'il soient correctement chargés avec une variable qui passe à true à la fin de la méthode d'importation.
Le problème apparait uniquement lorsque je veux dessiner mon objet, sur ces lignes :
Code:
1 2
| gl.getGLx().glEnableVertexAttribArray(indexNormal);
gl.getGLx().glVertexAttribPointer(indexNormal, 3, GL.GL_FLOAT, false, strideVertexNormal, 0); |
il me met
Citation:
javax.media.opengl.GLException: array vertex_buffer_object must be enabled to call this method
Je précise que c'est juste le lancement dans un autre thread qui déclenche cette erreur, car si je lance l'importation dans un autre thread et que j'attend que cette importation soit finie, j'ai la même erreur.
Voilà les deux méthodes d'importation :
Mode multi-thread qui déclenche l'exception
Code:
1 2 3 4
| voiture = new ObjectVBO();
ThreadImport ti = new ThreadImport(voiture, "./models/", "audi", gl);
ti.start();
while(ti.isAlive()){Thread.currentThread().sleep(50);}; |
Mode mono-thread qui fonctionne sans erreur
Code:
1 2 3
| voiture = new ObjectVBO();
ThreadImport ti = new ThreadImport(voiture, "./models/", "audi", gl);
ti.run(); //Lancement dans le même thread |
Merci de votre attention