wglMakeCurrent: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
 
K (Ausserdem -> Außerdem)
 
(4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
= wglMakeCurrent =
 
= wglMakeCurrent =
  
<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>
+
 
 +
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
----
 
 
function '''wglMakeCurrent'''(''DC'' : HDC; ''RC'' : HGLRC) : BOOL
 
function '''wglMakeCurrent'''(''DC'' : HDC; ''RC'' : HGLRC) : BOOL
  
<br>
+
 
 +
 
 
== Parameter ==
 
== Parameter ==
----
 
 
<table border=1 rules=all>
 
<table border=1 rules=all>
 
<tr>
 
<tr>
Zeile 25: Zeile 25:
 
</table>
 
</table>
  
<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>
+
 
 +
 
 
== 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.
  
 
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.
 
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.
+
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.
 
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.
Zeile 43: Zeile 43:
 
Wenn ein Fehler auftritt, dann wird der Renderkontext nicht als aktiv gesetzt, bevor zurückgesprungen wird.
 
Wenn ein Fehler auftritt, dann wird der Renderkontext nicht als aktiv gesetzt, bevor zurückgesprungen wird.
  
<br>
+
 
 +
 
 
== Siehe auch ==
 
== Siehe auch ==
----
 
 
[[wglCreateContext]], [[wglDeleteContext]], [[wglGetCurrentContext]], [[wglGetCurrentDC]]
 
[[wglCreateContext]], [[wglDeleteContext]], [[wglGetCurrentContext]], [[wglGetCurrentDC]]
 +
 +
[[Kategorie:WGL|MakeCurrent]]

Aktuelle Version vom 21. März 2012, 15:50 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.

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