glXMakeCurrent: Unterschied zwischen den Versionen

Aus DGL Wiki
Wechseln zu: Navigation, Suche
(Beschreibung)
K (Bot: konvertiere/korrigiere <BR>)
 
(8 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{Unvollständig}}
 
 
= glXMakeCurrent =
 
= glXMakeCurrent =
  
<br>
+
 
 +
 
 
== Name ==
 
== Name ==
'''glXMakeCurrent''' - verbindet einen GLX-Renderingcontext mit einem Fenster oder einer GLX-PixMap.
+
'''glXMakeCurrent''' - verbindet einen GLX-[[Renderkontext]] mit einem Fenster oder einer GLX-PixMap.
 +
 
 +
 
 +
 
  
<br>
 
 
== Delphi-Spezifikation ==
 
== Delphi-Spezifikation ==
  
 
  function '''glXMakeCurrent'''(''dpy'' : PDisplay; ''drawable'' : GLXDrawable; ''ctx'' : GLXContext): glboolean
 
  function '''glXMakeCurrent'''(''dpy'' : PDisplay; ''drawable'' : GLXDrawable; ''ctx'' : GLXContext): glboolean
  
<br>
+
 
 +
 
  
 
== Parameter ==
 
== Parameter ==
Zeile 23: Zeile 26:
 
|-
 
|-
 
! ''ctx''  
 
! ''ctx''  
| Bestimmt den GLX-Renderingkontext der die Zeichenfläche ''drawable'' benutzen soll.
+
| Bestimmt den GLX-Renderkontext der die Zeichenfläche ''drawable'' benutzen soll.
 
|}
 
|}
  
<br>
+
 
 +
 
  
 
== Beschreibung ==  
 
== Beschreibung ==  
glXMakeCurrent erledigt zwei Vorgänge: es erstellt ctx, den aktuellen GLX Renderkontext des aufrufenden Threads, wobei es einen eventuell vorhandenen älteren Kontext überscreibt und es hängt ctx an ein GLX-Drawable, entweder ein Fenster oder eine GLX Pixmap.
+
'''glXMakeCurrent''' erledigt zwei Vorgänge:  
Als Ergebnis benutzen nachfolgende GL Renderaufrufe ctx um das GLX-Drawable zu verändern.
+
# es macht ''ctx'' zum aktuellen GLX Renderkontext des aufrufenden Threads, wobei es einen eventuell vorhandenen älteren Kontext überschreibt und  
Weil glXMakeCurrent den aktuellen Renderkontext immer überschreibt, kann es in einem Thread nur einen aktuellen Renderkontext geben.
+
# es hängt ''ctx'' an ein GLX-Zeichenfläche (entweder ein Fenster oder eine GLX Pixmap).
 +
Als Ergebnis benutzen nachfolgende GL Renderaufrufe ''ctx'' um die GLX-Zeichenfläche ''drawable'' zu verändern.
 +
Weil '''glXMakeCurrent''' den aktuellen Renderkontext immer überschreibt, kann es in einem Thread nur einen aktuellen Renderkontext geben.
  
 
Wartende Befehle für den früheren Kontext werden gelöscht, bevor dieser gelöscht wird.
 
Wartende Befehle für den früheren Kontext werden gelöscht, bevor dieser gelöscht wird.
  
Der erste Aufruf von glXMakeCurrent in einem Thread setzt den Viewport auf die volle Größe des GLX-Drawables. Weitere Aufrufe von glXMakeCurrent mit ctx haben keinen Effekt auf den Viewport.
+
Der erste Aufruf von glXMakeCurrent in einem Thread setzt den Viewport auf die volle Größe der GLX-Zeichenfläche. Weitere Aufrufe von '''glXMakeCurrent''' mit ''ctx'' haben keinen Effekt auf den Viewport.
  
<b><i> Originaltext zur Überprüfung:
+
Um den aktuellen Renderkontext freizugeben ohne einen neuen zu zuweisen, rufen Sie '''glXMakeCurrent''' mit ''drawable'' = '''None''' und ''ctx'' = '''NIL''' auf.
glXMakeCurrent does two things:  It makes ctx the current GLX rendering context of the calling thread, replacing the
 
previously current context if there was one, and it attaches ctx to a GLX drawable, either a window or a GLX pixmap. As
 
a result of these two actions, subsequent GL rendering calls use rendering context ctx to modify GLX drawable drawable.
 
Because glXMakeCurrent always replaces the current rendering context with ctx, there can be only one current context per
 
thread.
 
  
Pending commands to the previous context, if any, are flushed before it is released.
+
'''glXMakeCurrent''' liefert '''True''' wenn die Änderungen erfolgreich waren, in jedem anderen Fall wird '''False''' zurück geliefert. Wenn '''False''' zurückgeliefert wurde, wird der alte Renderkontext genauso wie die letzte Zeichenfläche(wenn eine zugewiesen war) unverändert beibehalten.
  
The first time ctx is made current to any thread, its viewport is set to the full size of drawable. Subsequent
 
calls by any thread to glXMakeCurrent with ctx have no effect on its viewport.
 
</i></b>
 
  
Um den aktuellen Renderkontext freizugeben ohne einen neuen zu zuweisen, rufen Sie '''glXMakeCurrent''' mit ''drawable'' = '''None''' und ''ctx'' = '''NIL''' auf.
 
  
'''glXMakeCurrent''' liefert '''True''' wenn die Änderungen erfolgreich waren, in jedem anderen Fall wird '''False''' zurück geliefert. Wenn '''False''' zurückgeliefert wurde, wird der alte Renderkontext genauso wie die letzte Zeichenfläche(wenn eine zugewiesen war) unverändert beibehalten.
 
 
<br>
 
  
 
== Hinweise ==
 
== Hinweise ==
Zeile 67: Zeile 61:
  
  
<br>
+
 
 +
 
 
== Fehlermeldungen ==
 
== Fehlermeldungen ==
 
'''BadMatch''' wird generiert wenn ''drawable'' nicht mit dem selben X-Screen und Visual erstellt wurde wie ''ctx''.
 
'''BadMatch''' wird generiert wenn ''drawable'' nicht mit dem selben X-Screen und Visual erstellt wurde wie ''ctx''.
 
Dieser Fehler wird auch generiert wenn ''drawable'' '''NIL''' und ''ctx'' nicht '''NIL''' war.<br>
 
Dieser Fehler wird auch generiert wenn ''drawable'' '''NIL''' und ''ctx'' nicht '''NIL''' war.<br>
'''BadAccess''' wird generiert wenn ''ctx'' bereits der aktuelle Renderingkontext eines anderen Threads war, währen '''glXMakeCurrent''' aufgerufen wurde.<br>
+
'''BadAccess''' wird generiert wenn ''ctx'' bereits der aktuelle Renderkontext eines anderen Threads war, währen '''glXMakeCurrent''' aufgerufen wurde.<br>
 
'''GLXBadDrawable''' wird generiert wenn ''drawable'' keine gültige GLX-Zeichenfläche ist.<br>
 
'''GLXBadDrawable''' wird generiert wenn ''drawable'' keine gültige GLX-Zeichenfläche ist.<br>
'''GLXBadContext''' wird generiert wenn ''ctx'' kein gültiger GLX-Renderingkontext ist.<br>
+
'''GLXBadContext''' wird generiert wenn ''ctx'' kein gültiger GLX-Renderkontext ist.<br>
 
'''GLXBadContextState''' wird generiert wenn '''glXMakeCurrent''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird. <br>
 
'''GLXBadContextState''' wird generiert wenn '''glXMakeCurrent''' innerhalb eines [[glBegin]]-[[glEnd]] Blocks aufgerufen wird. <br>
'''GLXBadContextState''' wird auch generiert wenn der aktuelle Renderingkontext des rufenden Threads den GL-Renderstatus '''GL_FEEDBACK''' oder '''GL_SELECT''' hat.<br>
+
'''GLXBadContextState''' wird auch generiert wenn der aktuelle Renderkontext des rufenden Threads den GL-Renderstatus '''GL_FEEDBACK''' oder '''GL_SELECT''' hat.<br>
'''GLXBadCurrentWindow''' wird generiert wenn für den vorhergehenden Renderingkontext OpenGL-Befehle noch abgearbeitet werden müssen, die aktuelle Zeichenfläche aber ein nicht mehr gültiges Fenster ist.<br>
+
'''GLXBadCurrentWindow''' wird generiert wenn für den vorhergehenden Renderkontext OpenGL-Befehle noch abgearbeitet werden müssen, die aktuelle Zeichenfläche aber ein nicht mehr gültiges Fenster ist.<br>
'''BadAlloc''' ''kann'' generiert werden wenn  
+
'''BadAlloc''' ''kann'' generiert werden wenn der Server die Zuweisung von Hilfspuffern solange verzögert bis glXMakeCurrent aufgerufen wird und dann zu wenig Speicher vorhanden ist, um die Zuweisung zu vervollständigen.
<b><i>if the server has delayed allocation of ancillary buffers until glXMakeCurrent is called, only to find that it has insufficient resources to complete the allocation.</i></b><br>
+
 
 +
 
 +
 
  
<br>
 
 
== Siehe auch ==
 
== Siehe auch ==
 
[[glXCreateContext]], [[glXCreateGLXPixmap]]
 
[[glXCreateContext]], [[glXCreateGLXPixmap]]
  
 
[[Kategorie:GLX|MakeCurrent]]
 
[[Kategorie:GLX|MakeCurrent]]

Aktuelle Version vom 22. April 2006, 19:25 Uhr

glXMakeCurrent

Name

glXMakeCurrent - verbindet einen GLX-Renderkontext mit einem Fenster oder einer GLX-PixMap.



Delphi-Spezifikation

function glXMakeCurrent(dpy : PDisplay; drawable : GLXDrawable; ctx : GLXContext): glboolean



Parameter

dpy Bestimmt die Verbindung zum X-Server.
drawable Spezifiziert eine GLX-Zeichenfläche. Dies muss entweder die ID eines X-Window sein oder die ID einer GLX-PixMap.
ctx Bestimmt den GLX-Renderkontext der die Zeichenfläche drawable benutzen soll.



Beschreibung

glXMakeCurrent erledigt zwei Vorgänge:

  1. es macht ctx zum aktuellen GLX Renderkontext des aufrufenden Threads, wobei es einen eventuell vorhandenen älteren Kontext überschreibt und
  2. es hängt ctx an ein GLX-Zeichenfläche (entweder ein Fenster oder eine GLX Pixmap).

Als Ergebnis benutzen nachfolgende GL Renderaufrufe ctx um die GLX-Zeichenfläche drawable zu verändern. Weil glXMakeCurrent den aktuellen Renderkontext immer überschreibt, kann es in einem Thread nur einen aktuellen Renderkontext geben.

Wartende Befehle für den früheren Kontext werden gelöscht, bevor dieser gelöscht wird.

Der erste Aufruf von glXMakeCurrent in einem Thread setzt den Viewport auf die volle Größe der GLX-Zeichenfläche. Weitere Aufrufe von glXMakeCurrent mit ctx haben keinen Effekt auf den Viewport.

Um den aktuellen Renderkontext freizugeben ohne einen neuen zu zuweisen, rufen Sie glXMakeCurrent mit drawable = None und ctx = NIL auf.

glXMakeCurrent liefert True wenn die Änderungen erfolgreich waren, in jedem anderen Fall wird False zurück geliefert. Wenn False zurückgeliefert wurde, wird der alte Renderkontext genauso wie die letzte Zeichenfläche(wenn eine zugewiesen war) unverändert beibehalten.



Hinweise

Ein Prozess ist eine Einzelausführungsumgebung (engl: single-execution enviroment) welche in einem eigenen Adressraum eingebettet ist. Dabei bestehen Prozesse mindestens aus einem, durchaus aber auch mehreren Threads.

Ein Thread ist ein "Subprozesse" (aus ihnen bestehen ja Prozesse). Die Threads eines Prozesses teilen sich den selben Adressraum, bezitzen aber jeweils eigene Befehlszeiger (engl: program counters/ instruction pointer; Zeiger auf den nächsten auszuführenden Befehl), Stacks, sowie weitere zugehörige globale Daten (related global data). Wenn in der Subprozessgruppe eines Prozesses nur ein Thread enthalten ist, dann ist dieser identisch mit dem Prozess selbst.



Fehlermeldungen

BadMatch wird generiert wenn drawable nicht mit dem selben X-Screen und Visual erstellt wurde wie ctx. Dieser Fehler wird auch generiert wenn drawable NIL und ctx nicht NIL war.
BadAccess wird generiert wenn ctx bereits der aktuelle Renderkontext eines anderen Threads war, währen glXMakeCurrent aufgerufen wurde.
GLXBadDrawable wird generiert wenn drawable keine gültige GLX-Zeichenfläche ist.
GLXBadContext wird generiert wenn ctx kein gültiger GLX-Renderkontext ist.
GLXBadContextState wird generiert wenn glXMakeCurrent innerhalb eines glBegin-glEnd Blocks aufgerufen wird.
GLXBadContextState wird auch generiert wenn der aktuelle Renderkontext des rufenden Threads den GL-Renderstatus GL_FEEDBACK oder GL_SELECT hat.
GLXBadCurrentWindow wird generiert wenn für den vorhergehenden Renderkontext OpenGL-Befehle noch abgearbeitet werden müssen, die aktuelle Zeichenfläche aber ein nicht mehr gültiges Fenster ist.
BadAlloc kann generiert werden wenn der Server die Zuweisung von Hilfspuffern solange verzögert bis glXMakeCurrent aufgerufen wird und dann zu wenig Speicher vorhanden ist, um die Zuweisung zu vervollständigen.



Siehe auch

glXCreateContext, glXCreateGLXPixmap