glXCreateNewContext

Aus DGL Wiki
Version vom 14. Juli 2008, 15:13 Uhr von Thoronador (Diskussion | Beiträge) (Die Seite wurde neu angelegt: = glXCreateNewContext = == Name == '''glXCreateNewContext''' - Erzeugt einen neuen GLX-Renderkontext. == Delphi-Spezifikation == function '''glXCreateNewCont...)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

glXCreateNewContext

Name

glXCreateNewContext - Erzeugt einen neuen GLX-Renderkontext.


Delphi-Spezifikation

function glXCreateNewContext(dpy: PDisplay; config: GLXFBConfig; render_type: Integer;
                             share_list: GLXContext; direct: Boolean): GLXContext;


Parameter

dpy Gibt die Verbindung zum X-Server an
config Gibt die GLXFBConfig-Struktur mit den gewünschten Attributen für den Kontext an
render_type Gibt den Typ des zu erschaffenden Kontexts an. Mögliche Werte sind GLX_RGBA_TYPE und GLX_COLOR_INDEX_TYPE.
share_list Gibt den Kontext an, mit dem die Displaylisten geteilt werden. Wird nil angegeben, so werden keine Displaylisten geteilt.
direct Gibt an, ob das Rendern über eine direkte Verbindung zum Grafiksystem ausgeführt werden soll, wenn möglich, (True) oder über den X-Server (False)


Beschreibung

Die Funktion glXCreateNewContext erzeugt einen GLX-Renderkontext und gibt sein Handle zurück. Dieser Kontext kann genutzt werden, um in GLX-Fenster, Pixmaps oder Pixelpuffer zu rendern. Falls glXCreateNewContext fehlschlägt und keinen Renderkontext erstellen kann, wird nil zurückgegeben.

Falls render_type mit GLX_RGBA_TYPE angegeben ist, wird ein Kontext erzeugt, der RGBA-Rendern unterstützt. Falls für render_type GLX_COLOR_INDEX_TYPE angegeben ist, so wird ein Kontext erzeugt, der Farbindex-Rendern unterstützt.

Sofern share_list nicht nil ist, werden alle Displaylistenindizes und -definitionen zwischen dem Kontext share_list und dem neu erzeugten Kontext geteilt. Eine beliebige Anzahl von Kontexten kann einen einzelnen Displaylistenraum teilen. Jedoch müssen alle diese Kontexte selbst, die die Displaylisten untereinander teilen, im gleichen Adressraum existieren. Zwei Renderkontexte teilen sich den gleichen Adressraum, falls beide nichtdirekt (siehe glXIsDirect) sind und den gleichen Server nutzen, oder falls beide zum gleichen Prozess gehören. Zu beachten ist, dass es im nichtdirekten Fall nicht nötig ist, dass die aufrufenden Threads einen Adressraum teilen, sondern nur die zugehörigen Renderkontexte einen Adressraum teilen.

Sofern direct den Wert True hat, so wird ein direkter Renderkontext erzeugt, falls die Implementierung direktes Rendern unterstützt, falls die Verbindung zum X-Server zu einem lokalen X-Server führt und falls ein direkter Renderkontext verfügbar ist. (Eine Implementierung kann jedoch auch einen indirekten Renderkontext zurückgeben, wenn direct den Wert True hat.) Falls direct den Wert False hat, wird immer ein Renderkontext erzeugt, der über den X-Server rendert. Direktes Rendern bringt in einigen Implementierungen einen Performancevorteil mit sich. Allerdings können direkte Renderkontexte nicht außerhalb eines einzelnen Prozesses geteilt werden und sie sind möglicherweise nicht in der Lage, in GLX-Pixmaps zu rendern.


Hinweise

glXCreateNewContext ist nur verfügbar, wenn die GLX-Version 1.3 oder höher ist.

Falls die GLX-Version 1.1 oder 1.0 ist, so muss die GL-Version 1.0 sein. Falls die GLX-Version 1.2 ist, so muss die GL-Version 1.1 sein. Falls die GLX-Version 1.3 ist, so muss die GL-Version 1.2 sein.


Fehlermeldungen

Falls die Ausführung auf der Klientseite scheitert, wird nil zurückgegeben.

GLXBadContext wird generiert, wenn share_list kein gültiger GLX-Kontext ist und nicht nil ist.

GLXBadFBConfig wird generiert, wenn config keine gültige GLXFBConfig-Struktur ist.

BadMatch wird generiert, falls der zu erschaffende Kontext nicht den gleichen Adressraum oder den Bildschirm des mit share_list angegebenen Kontexts teilt.

BadAlloc wird generiert, wenn der Server nicht genug Ressourcen hat, um einen neuen Kontext anzulegen.

BadValue wird generiert, falls config nicht gültig ist (z.B. wenn eine bestimmte GLX-Implementation dies nicht unterstützt.


Siehe auch

glXChooseFBConfig, glXCreateContext, glXDestroyContext, glXGetFBConfigs, glXGetFBConfigAttrib, glXIsDirect, glXMakeContextCurrent