Linux, 3D und der ganze Rest
-
Hi!
Ich habe zur zeit einige Verständniss-Probleme im Bereich Linux mit 3D und X-Server.Also:
1. Welche Möglichkeiten gibt es unter Linux 3D-Grafik auszugeben?
2. Welche auswirkungen auf die Wahl der Möglichkeiten hat der verwendete X-Server? Muss man eine andere API benutzen wenn der Server z.B die AIGLX oder die XGL Architektur benutzt?
3. Was genau ist die Mesa-API? Wie steht sie im Zusammenhang mit GLX? Ist Mesa Netzwerktransparent?Würde mich freuen wenn ihr mir einige dieser Begriffe erläutern könntet oder mir Links zu HowTos/Tutorials/Manuals/Artikeln geben könntet in denen ich informationen zu diesen Themen finden kann.
Bin schon nahe der Verzweiflung, irgendwie findet man wenig (aktuelle) Informationen zu diesem Thema im Web.
-
MESA ist einfach die »freie« OpenGL Implementierung für Gnu/Linux.
Mesa-API ~ Open GL
GLX ist die openGL Erweiterung für den XServer. Du kannst in OpenGL kein Fenster erstellen, keine inputs abfangen, keine Buffer tauschen. Dafür verwendet man GLX.
AIGLX, XGL & Co sind nicht so sehr mein Fachgebiet. Das sollten allerdings auch Erweiterungen des XServers sein, die primär im Zusammenhang mit 3D Desktops wie Beryl/Compiz (Fusion) verwendet werden.
X ist tatsächlich ein unangenehmes Thema zum Suchen im Web, man findet primär die Leute, die ihren XServer nicht zum laufen bekommen, Hardwarebeschläunigung haben wollen usw.
Meine Quellen:
http://users.actcom.co.il/~choo/lupg/tutorials/xlib-programming/xlib-programming.html
http://www.pronix.de/pronix-28.html
-
mhm ... heisst das also das Mesa, eine OpenGL-ähnliche 3D-Rendering-Bibliothek GLX braucht um auf einem X-Server (beschleunigte 3D)Grafik ausgeben zu können?
Oder verstehe ich das komplett falsch?
-
Mesa ist nicht OGL artig sinder Mesa ist OpenGL unter Linux. Für Hardwarebeschläunigung brauchst du einen XServer mit der DRI-Extension und glX dient dazu, den Rendercontext zu erstellen, damit dein OpenGL weiß wo es hinrendern soll, Buffer zu swappen und derartige Aufgaben.
Du kannst auch direkt mit X und ohne OpenGL/MESA Grafik ausgeben
mit 3D undHardwarebeschläunigung wird's dann allerdings schwehr
-
Die Basis für 3D unter Linux bildet immer OpenGL. Dazu braucht man aber noch eine Fenster-Bibliothek. Eine Auswahl findest du hier: http://www.opengl.org/resources/libraries/windowtoolkits/
-
lexomat schrieb:
Muss man eine andere API benutzen wenn der Server z.B die AIGLX oder die XGL Architektur benutzt?
Nein, AIGLX und XGL haben nichts mit deiner Anwendung zu tun. Das sind einfach nur X-Server, die selbst OpenGL für beschleunigte Grafikeffekte benutzen.
Wenn du einfach nur Programme schreiben willst, dann schnapp dir die SDL (oder was auch immer) und OpenGL und mach dir keine Gedanken über DRI etc.
-
Wenn du Linux und 3D machen willst, dann bleibt dir eigentlich nur OpenGL.
Da kannst du dann entweder die MesaGL Implementierung nehmen. Das ist langsam, weil es komplett ohne Hardware beschläung Arbeitet. Oder du installierst die entsprechenden Treiber für deine Grafikkarte.
Das läuft dann so mit GLX und X11 erstellst du ein Fenster, in dem OpenGL läuft. (Anschaulich gesprochen) und darein malst du mit den OpenGL Funktionen. Die sind gleich egal ob Mesa oder Nvidia oder ATI.
Schau mal hier:
http://nehe.gamedev.net (die Linux/GLX/SDL Beispiele)Für OpenGL auch nicht schlecht:
http://www.libsdl.org
-
ProgChild schrieb:
Wenn du Linux und 3D machen willst, dann bleibt dir eigentlich nur OpenGL.
Da kannst du dann entweder die MesaGL Implementierung nehmen. Das ist langsam, weil es komplett ohne Hardware beschläung Arbeitet. Oder du installierst die entsprechenden Treiber für deine Grafikkarte.
Auch die Hardware-Treiber verwenden MESA
da muss man im Source nichts machen als um DRI zu bitten oder ein Framework verwenden
-
MonoXNA - Das beste Projekt für den Grafikbereich unter Linux! Portabel, Schnell, Objektorientiert
-
Wenn ich egal auf welchen Betriebssystem Grafik ausgeben würden wollen würde, dann würde ich eine Grafikengine benützen. Die sind meistens Plattformübergreifend schaut euch mal das hier an:
www.irrlicht3d.de
www.lightfeather.de
Sind beides Topengines die auf Linux/Unix laufen. Ich würde mich allerdings für Lightfeather entscheiden.
MfG Grafikengine
P.S.: Ich dachte immer man kann auf Linux ganz normales OpenGL benützen. Ist ja auch so...