Stratégies de dessin OpenGL multithread
Le GDI ne prend pas en charge plusieurs threads. Vous devez utiliser un contexte d’appareil distinct et un contexte de rendu distinct pour chaque thread. Cela tend à limiter les avantages en matière de performances liés à l’utilisation de plusieurs threads avec des systèmes monoprocesseurs exécutant des applications OpenGL. Toutefois, il existe des façons d’utiliser des threads avec un système de processeur unique pour augmenter considérablement les performances. Par exemple, vous pouvez utiliser un thread distinct pour passer des appels de rendu OpenGL au matériel 3D dédié.
Les systèmes multitraitement symétriques (SMP) peuvent considérablement tirer parti de l’utilisation de plusieurs threads. Une stratégie évidente consiste à utiliser un thread distinct pour chaque processeur afin de gérer le rendu OpenGL dans des fenêtres distinctes. Par exemple, dans une application de simulation de vol, vous pouvez utiliser des processeurs et des threads distincts pour afficher les vues avant, arrière et latérale.
Un thread ne peut avoir qu’un seul contexte de rendu actif. Lorsque vous utilisez plusieurs threads et plusieurs contextes de rendu, vous devez veiller à synchroniser leur utilisation. Par exemple, utilisez un seul thread pour appeler SwapBuffers une fois que tous les threads ont terminé le dessin.