Bonjour,

Je développe actuellement une mini-application OpenGL multithreadée avec boost. J'ai divisé ma zone de rendu en plusieurs zones. Chaque thread s'occupe de rendre la zone qu'il lui est dédiée avec des points 2D et effectue aussi le rendu dans une image.

Pour l'accès à mes données, j'utilise naturellement un mutex de boost (boost::mutex::scoped_lock). Le mutex protège donc à la fois le rendu OpenGL et le rendu dans l'image.

Le problème est qu'OpenGL plante avec un core dump assez violent. Si je retire les instructions OpenGL, tout fonctionne normalement.

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
 
// Début de la fonction 
static boost::mutex mutex;
 
...
 
// Mutex (lock)
boost::mutex::scoped_lock lock(mutex);
 
// Output to screen
glBegin(GL_POINTS);
{
        glColor3fv(Color);
        glVertex2d(a, b);
}
glEnd();
 
// Output to image buffer
Image->SetValue(a, b, Color);
 
// Mutex (unlock)
lock.unlock();
Comment puis-je faire pour avoir le rendu OpenGL ? Merci d'avance


Nico.