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.
Comment puis-je faire pour avoir le rendu OpenGL ? Merci d'avance
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();
Nico.







Répondre avec citation
Partager