Mit OpenGL 3.2 auf Linux anfangen...

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Unknown GER
Beiträge: 49
Registriert: 09.01.2003, 13:04

Mit OpenGL 3.2 auf Linux anfangen...

Beitrag von Unknown GER »

Ich hab mich die letzte Zeit dazu motivieren können, mal mit OpenGL anzufangen. Und wenn schon offen und frei, dann alles. Also soll das ganze auch auf Linux (Ubuntu) sein. Dank dem WUBI Installer hab ich Ubuntu 9.10 sehr komfortabel installieren können, die neusten Nvidia-Treiber von deren Website sind erfolgreich eingerichtet und die aktuellsten Header-Dateien zu OpenGL sind auch dort wo sie sein sollten. :)

Schnell wird einem jedoch klar, dass so gut wie alles was man zu OpenGL im Internet findet entweder veraltet ist, oder das, was neu ist, für Verwirrung sorgt. Mir geht es nicht darum Grundkonzepte zu lernen, die kenn ich schon von Direct3D und aus einem Grafikpraktikum an der Uni mit OpenGL 1.x vor ein paar Jahren. Ich möchte wissen, wie ich kleine Demoanwendungen zu aktuellen 'Technologien' schreibe.

Aber es fängt ja schon bei GLX an. GLX 1.4 ist auf OpenGL 1.3 abgestimmt. Hier gibt es schon mehrere Wege vorzugehen und der über die glXFBConfigs scheint der 'aktuelle' zu sein. Aber auch hier stolpert man über Ungereimtheiten. Es gibt für (fast) alles benötigte aus der Xlib eine GLX-Version... und doch muss ich aus erzeugten GLX-Dingen wieder Xlib-Sachen extrahieren, weil nachfolgende GLX-Aufrufe das als Parameter verlangen (zum Beispiel brauch man ein Window für ein GLXWindow, und das dafür benötigte XVisual kann man auf dem GLXFBConfig holen). Es ist einfach ein Wirrwarr...

Weiter geht es mit der Erstellung eines OpenGL 3.2-Kontexts. Dazu soll man erst ein alten Kontext erstellen und mit dessen Hilfe dann einen neuen 3.2er, nur um den alten daraufhin zu löschen und solche Faxen... :shock: Sucht man Informationen darüber, landet man immer wieder beim selben Tutorial das zu dem auf WGL basiert...

Hier also die Kernfrage: Gibt es verlässliche Dokumentation zu GLX 1.4 in Verbindung mit OpenGL 3.2 und GLSL 1.5, evtl. mit Referenzimplementierungen?
Da blickt doch - wörtlich - keiner mehr durch.
yonibear
Beiträge: 6
Registriert: 04.02.2006, 19:05
Kontaktdaten:

Re: Mit OpenGL 3.2 auf Linux anfangen...

Beitrag von yonibear »

SDL in der aktuellen SVN-Version hat wohl auch schon Support für OpenGL 3 Kontexte.
Ich hab keine Erfahrung ob das schon was taugt, aber da kannst du dir auf jeden Fall schonmal ne funktionierende Implementation abschauen, oder dir das unappetitliche Xlib/GLX-Gefrickel sparen und direkt mit SDL loslegen.
Benutzeravatar
TheTom
Beiträge: 4
Registriert: 15.10.2009, 21:37
Kontaktdaten:

Re: Mit OpenGL 3.2 auf Linux anfangen...

Beitrag von TheTom »

yonibear hat geschrieben:SDL in der aktuellen SVN-Version hat wohl auch schon Support für OpenGL 3 Kontexte.
SDL kann ich auch nur empfehlen. Dazu gibt es auch ein Tutorial.
Unknown GER
Beiträge: 49
Registriert: 09.01.2003, 13:04

Re: Mit OpenGL 3.2 auf Linux anfangen...

Beitrag von Unknown GER »

SDL möchte ich erst einmal vermeiden, da ich auch das Wie und Warum verstehen möchte. Mit Hilfe des Xlib Manuals, der GLX-Spezifikation und der Lektüre der GLX_ARB_create_context(_profile)-Erweiterung hab ich es nun endlich zufriedenstellend hinbekommen denke ich. :) Jetzt muss ich anfangen, auch wirklich etwas auf den Bildschirm zu zaubern, das nur mit OpenGL 3.2 funktionieren sollte, um noch sicher zu gehen.

Übrigens ist es - entgegen den Informationen die man dazu im Internet in gewissen Tutorials finden kann - doch sehr wohl möglich, direkt einen 3.2er Kontext zu erstellen, ohne vorher einen alten <3.0er Kontext zu erstellen! Diese Erkenntnis hätte mir einige Zeit erspart. Ich hoffe, ich konnte jemandem damit rechtzeitig behilflich sein.
suke
Beiträge: 5
Registriert: 18.01.2007, 11:40

Re: Mit OpenGL 3.2 auf Linux anfangen...

Beitrag von suke »

Der Vollständigkeit halber poste ich hier noch einen Link auf ein Tutorial im OpenGL-Wiki, wo ei OpenGL 3.0 Context erstellt wird. Um ein OpenGL 3.2 Context zu erzeugen, braucht man nur

Code: Alles auswählen

static int context_attribs[] =
{
      GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
      GLX_CONTEXT_MINOR_VERSION_ARB, 0,
      //GLX_CONTEXT_FLAGS_ARB        , GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,
      None
};
in

Code: Alles auswählen

static int context_attribs[] =
{
      GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
      GLX_CONTEXT_MINOR_VERSION_ARB, 2,
      GLX_CONTEXT_FLAGS_ARB        , GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,
      None
};
umzuändern.
Hab es selber auf meinem System (Ubuntu 9.10 und nVidia 195.30 Treiber) ausprobiert und es funktioniert.
Unknown GER
Beiträge: 49
Registriert: 09.01.2003, 13:04

Re: Mit OpenGL 3.2 auf Linux anfangen...

Beitrag von Unknown GER »

Aber auch in diesem Tutorial wird erst ein alter Kontext angelegt - warum auch immer. Angeblich, damit man den richtigen Zeiger für glXCreateContextAttribsARB bekommt, aber es handelt sich dabei doch um eine GLX-Erweiterung und nicht um eine GL-Erweiterung. Funktioniert auch direkt.
Antworten