wglMakeCurrent: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
 
K (Trennlinien entfernt)
Zeile 3: Zeile 3:
 
<br>
 
<br>
 
== Name ==
 
== 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.
 
'''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.
  
 
<br>
 
<br>
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
----
 
 
function '''wglMakeCurrent'''(''DC'' : HDC; ''RC'' : HGLRC) : BOOL
 
function '''wglMakeCurrent'''(''DC'' : HDC; ''RC'' : HGLRC) : BOOL
  
 
<br>
 
<br>
 
== Parameter ==
 
== Parameter ==
----
 
 
<table border=1 rules=all>
 
<table border=1 rules=all>
 
<tr>
 
<tr>
Zeile 27: Zeile 24:
 
<br>
 
<br>
 
==  Rückgabewerte ==
 
==  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.
 
Im '''Erfolgsfalle''' wird '''TRUE''' zurückgeliefert, ansonsten '''FALSE'''. Mittels der Win32-Funktion GetLastError kann man nähere Informationen zum Scheitern der Funktion ermitteln.
  
 
<br>
 
<br>
 
== Hinweise ==
 
== 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.
 
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.
  
Zeile 45: Zeile 40:
 
<br>
 
<br>
 
== Siehe auch ==
 
== Siehe auch ==
----
 
 
[[wglCreateContext]], [[wglDeleteContext]], [[wglGetCurrentContext]], [[wglGetCurrentDC]]
 
[[wglCreateContext]], [[wglDeleteContext]], [[wglGetCurrentContext]], [[wglGetCurrentDC]]

Version vom 16. August 2004, 01:11 Uhr

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