wglMakeCurrent: Unterschied zwischen den Versionen
Flash (Diskussion | Beiträge) K (→Siehe auch) |
DGLBot (Diskussion | Beiträge) K (WglMakeCurrent wurde nach wglMakeCurrent verschoben) |
(kein Unterschied)
|
Version vom 5. Dezember 2005, 21:26 Uhr
Inhaltsverzeichnis
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.
Ausserdem 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