wglMakeCurrent

Aus DGL Wiki
(Weitergeleitet von WglMakeCurrent)
Wechseln zu: Navigation, Suche

wglMakeCurrent

Name

wglMakeCurrent - Setzt den angegebenen OpenGL-Renderkontext als aktuellen Renderkontext des aufrufenden Threads. Alle folgenden, vom Thread aufgerufene OpenGL-Funktionen werden auf den in DC angegebenen Gerätekontext gezeichnet. wglMakeCurrent kann auch genutzt werden um den Renderkontext eines Threads zu deaktivieren.


Delphi-Spezifikation

function wglMakeCurrent(DC : HDC; RC : HGLRC) : BOOL


Parameter

DC Handle eines Gerätekontext, auf den alle folgenden OpenGL-Funktionen zeichnen.
RC Handle des Renderkontextes, den die Funktion als aktuellen Renderkontext des aufrufenden Threads setzen soll. Wenn dieser Parameter = Null (0) ist, dann wird der Renderkontext des aufrufenden Threads deaktiviert. In diesem Falle wird DC ignoriert.


Rückgabewerte

Im Erfolgsfalle wird TRUE zurückgeliefert, ansonsten FALSE. Mittels der Win32-Funktion GetLastError kann man nähere Informationen zum Scheitern der Funktion ermitteln.


Hinweise

Der Parameter DC muss auf eine Zeichenfläche verweisen, die durch OpenGL untersützt wird, muss jedoch nicht unbedingt der selbe Gerätekontext sein, der bei der Erstellung via wglCreateContext übergeben wurde, aber muss auf dem selben Gerät vorliegen und das selbe Pixelformat besitzen. Transformationen und Clipping über die GDI sind werden im Renderkontext nicht unterstützt. Der aktuelle Renderkontext nutzt das in DC angegebene Gerät solange, bis er deaktiviert wurde.

Vor dem Wechsel zu einem neuen Renderkontext "entleert" (flusht) OpenGL alle Renderkontexte die für den aufrufenden Thread aktuell waren. Während ein Thread nur einen aktiven Renderkontext besitzen kann, darf ein Prozess mehrere Renderkontexte (->Multithreading) bestizen. Ein Thread muss einen Renderkontext setzen, bevor er OpenGL-Funktionen aufrufen kann, da diese ansonst ignoriert werden.

Außerdem kann ein Renderkontext gleichzeitig immer nur zu einem Thread gehören, es ist also nicht möglich einen Renderkontext gleichzeitig in mehreren Threads zu nutzen.

Rendern über Multithreading kann erreicht werden, indem eine Anwendung verschiedene Renderkontexte für verschiedene Threads aktiviert, wobei jeder Thread einen eigenen Renderkontext und Gerätekontext zugewiesen bekommt.

Wenn ein Fehler auftritt, dann wird der Renderkontext nicht als aktiv gesetzt, bevor zurückgesprungen wird.


Siehe auch

wglCreateContext, wglDeleteContext, wglGetCurrentContext, wglGetCurrentDC