Autor Thema: Frage zu GUI-Programmierung(Linux)  (Gelesen 3854 mal)

aletes

  • Beiträge: 43
    • Profil anzeigen
Gespeichert
« am: 25. June 2010, 19:41 »
Hi
Ich wollte gerne wissen, wie ich unter Linux den Grafikmodus initialisieren kann? Ich meine, es gibt mit Sicherheit ein Programm, welches beim Starten einer GUI(zB. KDE oder Gnome) gestartet wird, aber wie heißt dieses?

ys, aletes  :-)

stultus

  • Beiträge: 486
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 25. June 2010, 19:54 »
Uhm, nein, wird nicht. Es läuft der X-Server (im Regelfall xorg), der die komplette Verwaltung Grafik raus Eingabe rein übernimmt. Ob/Wie dann weitere Sachen geladen werden, hängt von anderen Stellen ab. Typische Initskripte starten z.b. einen X Display Manager (xdm, gdm, kdm), der stellt dir dann die Loginmaske zur Verfügung (und startet bei erfolgreichem Login dann die Startskripte für diverse Desktopumgebungen).

Grafikmodi setzen, machst du (im Regelfall) via X-Server. Wobei man da beachten muss, das das am besten beim Start funktioniert, im laufenden Betrieb Auflösung wechseln kann (je nach Treiber, Weiteren Einstellungen wie z.b. nem zweiten Monitor) garnicht via X machbar sein, sondern muss z.b. über Setupdialoge der Treiberhersteller gemacht werden (z.b. bei nVidia-Karten mit nvidia-treiber, bei twinview/Mehr-Monitor-Setup).

Ausnahme: Man kann ohne den X-Server arbeiten. Die zwei Variante die mir da einfallen wäre DirectFB (http://www.directfb.org/), oder direkter Zugriff auf KMS (Kernel Mode Setting, da sind Teile der Grafiktreiber, nämlich eben das Setzen des Modus, in den Kernel ausgelagert). DirectFB kommt (afaik) ohne Hardwarebeschleunigung, KMS erfordert vollständige Grafiktreiber. Also beides nicht unbedingt _die_ Optionen.

Für nen Einstieg in Programmierung direkt am X-Server siehe z.b. http://www.pronix.de/pronix-28.html . Aber ganz ehrlich, im Regelfall willst du das nicht. Für Spiele / Alles was ernsthaft schnelle Grafik benötigt, solltest du normal zu OpenGL greifen, als Schicht zum Initialisieren bietet sich SDL an. Für normale Anwendungen das Framework der Präferenz - gtk (Gnome) oder Qt (KDE).
MSN: planetconquestdm@hotmail.de
ICQ: 190-084-185

... Wayne?

aletes

  • Beiträge: 43
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 25. June 2010, 20:29 »
Danke  :-D

Ich wollte nämlich eine eigene GUI für Linux programmieren(einfach so zum Spaß, oder "just for fun")  :-P

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 25. June 2010, 21:48 »
Hallo,

möglicherweise schaust du dir die Framebuffer-Schnittstelle an, die du bekommst, wenn du den Kernel im Grafikmodus betreibst (z.B. mit dem Parameter vga=793 == 1024x768x16). Das funktioniert auf jeder VESA-kompatiblen Grafikkarte, ist aber unbeschleunigt.

Mit speziellen Framebuffer-Treibern (intelfb, matroxfb) oder dem - noch sehr modernen - KMS hast du dort auch 2D-Beschleunigung*, außerdem direkten Zugriff auf den Grafikspeicher. Im Kernel-Source unter Documents/fb/framebuffer.txt findest du eine gute Einleitung.

Das dürfte wahrscheinlich der einfachste Ansatzpunkt für eine eigene GUI sein, wenn du einfach mit dem Grafikspeicher spielen möchtest. Grafikmodus setzen ist damit auch möglich (über IOCTLs), wenn der Treiber das unterstützt - vesafb tut dies nicht.

Für allgemeine grafische Programmierung (nicht GUI, sondern Anwendungen) solltest du dich auf X oder Abstraktionen davon (SDL, GTK, Qt) konzentrieren.

edit:
* Meist aber nur die Möglichkeit, ein schnelles Overlay mit Farbraumkonvertierung (YUV->RGB) anzulegen. BitBlt o.ä. sind meist nicht dabei.

Gruß,
Svenska
« Letzte Änderung: 25. June 2010, 21:51 von Svenska »

 

Einloggen