Partager via


Contextes de rendu

Un contexte de rendu OpenGL est un port par lequel toutes les commandes OpenGL passent. Chaque thread qui effectue des appels OpenGL doit avoir un contexte de rendu actuel. Les contextes de rendu lient OpenGL aux systèmes de fenêtrage Windows.

Une application spécifie un contexte d’appareil Windows lorsqu’elle crée un contexte de rendu. Ce contexte de rendu convient pour dessiner sur l’appareil auquel le contexte d’appareil spécifié fait référence. En particulier, le contexte de rendu a le même format de pixels que le contexte de l’appareil. Pour plus d’informations, consultez Fonctions de contexte de rendu.

Malgré cette relation, un contexte de rendu n’est pas identique à un contexte d’appareil. Un contexte d’appareil contient des informations pertinentes pour le composant graphique (GDI) de Windows. Un contexte de rendu contient des informations pertinentes pour OpenGL. Un contexte d’appareil doit être spécifié explicitement dans un appel GDI. Un contexte de rendu est implicite dans un appel OpenGL. Vous devez définir le format de pixels d’un contexte d’appareil avant de créer un contexte de rendu.

Un thread qui effectue des appels OpenGL doit avoir un contexte de rendu actuel. Si une application effectue des appels OpenGL à partir d’un thread qui ne dispose pas d’un contexte de rendu actuel, rien ne se passe ; l’appel n’a aucun effet. Une application crée généralement un contexte de rendu, le définit comme contexte de rendu actuel d’un thread, puis appelle des fonctions OpenGL. À la fin de l’appel des fonctions OpenGL, l’application dissocie le contexte de rendu du thread, puis supprime le contexte de rendu. Une fenêtre peut avoir plusieurs contextes de rendu à la fois, mais un thread ne peut avoir qu’un seul contexte de rendu actif et actif.

Un contexte de rendu actuel a un contexte d’appareil associé. Ce contexte d’appareil n’a pas besoin d’être le même contexte d’appareil que celui utilisé lors de la création du contexte de rendu, mais il doit référencer le même appareil et avoir le même format de pixel.

Un thread ne peut avoir qu’un seul contexte de rendu actuel. Un contexte de rendu ne peut être actif que pour un seul thread.