glXCopyContext

Aus DGL Wiki
Wechseln zu: Navigation, Suche

glXCopyContext

Name

glXCopyContext - Kopiert Zuständen von einem Renderkontext zu einem anderen.


Delphi-Spezifikation

procedure glXCopyContext(dpy: PDisplay; src: GLXContext; dst: GLXContext; mask: TGLuint);


Parameter

dpy Gibt die Verbindung zum X-Server an
src Quellkontext, dessen Zustände kopiert werden sollen
dst Zielkontext, der die Zustände von src übernehmen soll
mask Bitmaske, die bestimmt, welche Zustände kopiert werden sollen


Beschreibung

Die Funktion glXCopyContext kopiert ausgewählte Gruppen von Zustandsvariablen von Kontext src zum Kontext dst. Der Parameter mask gibt an, welche Gruppen von Zustandsvariablen kopiert werden. mask beinhaltet die gleichen und durch bitweises Oder verknüfpten symbolischen Namen, die auch an glPushAttrib übergeben werden. Die einzelne Konstante GLX_ALL_ATTRIB_BITS kann genutzt werden, um die maximal mögliche Anzahl an Renderzuständen zu kopieren.

Das Kopieren kann nur stattfinden, wenn sich src und dst den gleichen Adressraum teilen. Zwei Renderkontexte teilen sich einen Adressraum, wenn beide nicht-direkt (siehe glXIsDirect) sind und den gleichen Server benutzen, oder wenn beide direkt sind und zum gleichen Prozess gehören. Zu beachten ist, dass es im nicht-direkten Fall nicht nötig ist, dass sich die aufrufenden Threads einen Adressraum teilen, sondern nur dass die zugehörigen Renderkontexte den gleichen Adressraum nutzen.

Nicht alle Werte von GL-Zuständen können kopiert werden. Zum Beispiel werden PixelPack- und Unpack-Zustand, Rendermoduszustand sowie Selektions- und Feedbackzustand nicht kopiert. Die Zustände, welche kopiert werden können, sind exakt jene Zustände, welche man auch mit dem OpenGL-Befehl glPushAttrib manipulieren kann.

Ein implizites glFlush wird von glXCopyContext aufgeführt, falls src der aktuelle Kontext des aufrufenden Threads ist.


Hinweise

Ein Prozess ist eine einzelne Ausführungsumgebung, welche in einem einzelnen Adressraum implementiert ist, und aus einem oder mehreren Threads besteht.

Ein Thread ist einer von einer Menge von Unterprozessen, die sich einen einzelnen Adressraum teilen, aber verschiedene Programmzähler, Stackräume und andere dazugehörige globale Daten verwalten. Ein Thread, der das einzige Mitglied seiner Unterprozessegruppe ist, ist äquivalent zu einem Prozess.


Fehlermeldungen

BadMatch wird generiert, wenn die Renderkontexte src und dst sich nicht den gleichen Adressraum teilen oder nicht für den selben Bildschirm erstellt wurden.

BadAccess wird generiert, falls dst zum Zeitpunkt des Aufrufes von glXCopyContext der aktuelle Kontext eines Threads (einschließlich des aufrufenden Threads) ist.

GLXBadCurrentWindow wird generiert, falls src der aktuelle Kontext ist und die aktuelle Zeichenfläche ein Fenster ist, welches nicht mehr gültig ist.

GLXBadContext wird generiert, wenn entweder src oder dst kein gültiger GLX-Kontext ist.


Siehe auch

glPushAttrib, glXCreateContext, glXIsDirect