Freigeben über


Renderkontexte

Ein OpenGL-Renderingkontext ist ein Port, über den alle OpenGL-Befehle übergeben werden. Jeder Thread, der OpenGL-Aufrufe ausgibt, muss über einen aktuellen Renderingkontext verfügen. Renderingkontexte verknüpfen OpenGL mit den Windows-Fenstersystemen.

Eine Anwendung gibt einen Windows-Gerätekontext an, wenn sie einen Renderingkontext erstellt. Dieser Renderingkontext eignet sich zum Zeichnen auf dem Gerät, auf das der angegebene Gerätekontext verweist. Insbesondere hat der Renderingkontext das gleiche Pixelformat wie der Gerätekontext. Weitere Informationen finden Sie unter Rendern von Kontextfunktionen.

Trotz dieser Beziehung ist ein Renderingkontext nicht mit einem Gerätekontext identisch. Ein Gerätekontext enthält Informationen, die für die Grafikkomponente (GDI) von Windows relevant sind. Ein Renderingkontext enthält Informationen, die für OpenGL relevant sind. Ein Gerätekontext muss in einem GDI-Aufruf explizit angegeben werden. Ein Renderingkontext ist in einem OpenGL-Aufruf implizit. Sie sollten das Pixelformat eines Gerätekontexts festlegen, bevor Sie einen Renderingkontext erstellen.

Ein Thread, der OpenGL-Aufrufe durchführt, muss über einen aktuellen Renderingkontext verfügen. Wenn eine Anwendung OpenGL-Aufrufe aus einem Thread ausführt, der keinen aktuellen Renderingkontext aufweist, geschieht nichts. der Aufruf hat keine Auswirkung. Eine Anwendung erstellt in der Regel einen Renderingkontext, legt ihn als aktuellen Renderingkontext eines Threads fest und ruft dann OpenGL-Funktionen auf. Wenn der Aufruf von OpenGL-Funktionen abgeschlossen ist, entkoppelt die Anwendung den Renderingkontext vom Thread und löscht dann den Renderingkontext. Ein Fenster kann mehrere Renderingkontexte gleichzeitig zeichnen, ein Thread kann jedoch nur einen aktuellen aktiven Renderingkontext aufweisen.

Ein aktueller Renderingkontext verfügt über einen zugeordneten Gerätekontext. Dieser Gerätekontext muss nicht derselbe Gerätekontext sein wie beim Erstellen des Renderingkontexts, er muss jedoch auf dasselbe Gerät verweisen und das gleiche Pixelformat aufweisen.

Ein Thread kann nur einen aktuellen Renderingkontext aufweisen. Ein Renderingkontext kann nur auf einen Thread aktuell sein.