Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/01/2015, à 21:55

Mr papier

Différence Xorg, Environement de bureau, Qt, OpenGL,ect...

Bonjour,
j'ouvre cette discussion car je me demande quel est la différence entre xorg, opengl, ect... Je ne comprend pas à quoi sert xorg et ce que fait l'environement de bureau avec. Je comprend pas également ce que vient faire OpenGL ou xrender avec gnome.Aussi comment l'ordinateur peut afficher des choses(au démarrage) sans xorg vu que c'est lui qui s'occupe de l'affichage non??? Bref tout ce qui est en rapport avec l'interface graphique de linux m'échappe.

Si quelqu'un pourrait m'expliquer tout comment l'interface graphique de linux fonctionne ce serait gentil.
Merci d'avance.

Hors ligne

#2 Le 13/01/2015, à 14:32

Clémentv

Re : Différence Xorg, Environement de bureau, Qt, OpenGL,ect...

Les éléments que tu cites sont très différents, je comprends que ce que tu veux est une explication générale de la pile graphique sous Linux.

Au plus bas niveau, on trouve les pilotes (inclus dans le noyau) qui permettent d'afficher des trucs à l'écran. Il y plusieurs façon d'afficher du contenu : mode texte ou mode graphique.
En mode graphique, on peut se contenter de passer des pixels à afficher (framebuffer) ou utiliser l'accélération graphique du GPU.
OpenGL est une API (interface de programmation), pour utiliser l'accélération 3D, elle est implémentée par chaque fabriquant de carte.

Avec tout ça on peut afficher ce qu'on veut à l'écran, mais ce n'est pas pratique si on veut afficher plus d'une application à la fois. Pour ça, on utilise un serveur d'affichage (X.org, Xfree86, Wayland, Mir, ...) qui va prendre le controle exclusif de l'affichage mais pour afficher plusieurs autres applications. Les clients du serveur d'affichage (les applications graphiques) utilisent un protocole pour communiquer ce qu'elles veulent afficher. Le serveur graphique s'occupe aussi de distribuer les entrées (clavier, souris, tactile, ...) aux applications intéressées.

L'environement de bureau n'est qu'un ensemble d'application, plus ou moins cohérent, qui permettent d'utiliser le bureau graphique (lanceur de programme, explorateur de fichier, éditeur et visionneur de bases, ...). Il contient généralement un gestionaire de fenêtre, qui une application particulièrement qui gèrent les fenêtres des autres applications : déplacement, redimensionnement, focus, ...

Les toolkits (Qt, Gtk, ...) sont des bibliothèques pour aider au développement d'application graphique. Elles permettent de ne pas utiliser directement le protocole du serveur d'affichage pour des raison pratiques ou de portabilité (Qt ou Gtk marchent avec différents serveurs d'affichage et même différents systèmes d'exploitation).

Une autre partie intéressante et optionnelle est le compositeur. Un compositeur est application qui récupèrent les fenêtres dessinées par les autres applications et les composent pour dessiner le bureau (ça permet des effets joli ou pratique mais aussi des optimisations). Il faut bien comprendre que X.org de base ne fait pas de composition, chaque application va dessiner elle même sur son bout d'écran en écrasant éventuellement le contenu des autres. Avec X.org, c'est en fait le gestionnaire de fenêtre qui s'occupe de la composition et X.org n'affiche alors en fait qu'une seule "fenêtre" fournie par le gestionaire de fenêtres qui prend tout l'écran. Pour les serveurs d'affichage modernes (wayland et mir), le serveur d'affichage est un compositeur.

Je sais pas si j'ai été très clair ou assez exhaustif, mais ça devrait au moins t'aider à préciser tes questions.

Dernière modification par Clémentv (Le 13/01/2015, à 14:44)

Hors ligne

#3 Le 13/01/2015, à 17:47

Mr papier

Re : Différence Xorg, Environement de bureau, Qt, OpenGL,ect...

Ok merci, ça me parait déjà beaucoup plus clair. Mais d'autres questions me viennent. Une fois que l'accélération graphique a fait ses calculs, envoie-elle toujours l'image à afficher au framebuffer? Ensuite, si je veux par exemple coder avec opengl tout ce que je dois faire c'est installer les headers de opengl car linux indique que j'utilise déja opengl (avec gnome compiz par exemple). De plus, si je comprend bien il y a également des versions de gtk ou Qt en opengl ou xrendrer ou autre? Est-ce que directx est l'équivalent de opengl mais sur windows? C'est à dire une bibliothèque pour l'accélération 3D mais pour windows. Est-ce qu'un environement de bureau peut également écraser le fichier de configuration de xorg?

En tout cas un grand merci pour cette explication cela m'as beaucoup aider.

PS: désolé pour le manque de clarté dans mes questions.

Dernière modification par Mr papier (Le 13/01/2015, à 17:53)

Hors ligne

#4 Le 13/01/2015, à 21:10

Clémentv

Re : Différence Xorg, Environement de bureau, Qt, OpenGL,ect...

Le dessin 3D se fait toujours vers un framebuffer mais pas forcément celui qui correspond à l'écran. Si tu utilises directement l'affichage sans passer par le serveur graphique ce sera celui affiché à l'écran sinon le dessin se fait dans un buffer qui est partagé avec le serveur d'affichage ou le compositeur.

L'utilisation d'OpenGL pour coder est assez particulière. C'est une norme implémentée par différents constructeurs qui peuvent donner différentes versions avec différentes extensions. Tu trouveras sous Linux un header qui contient tout ce qu'il faut mais ça ne veut pas dire que toutes les fonctions marcheront partout. Par exemple Mesa (les pilotes libres) n'implémente que OpenGL 3 alors que les pilotes propriétaires fournissent OpenGL 4. Tu as aussi la possibilité de passer par des toolkits pour faire de l'OpenGL : GLUT, GLFW, SDL, Qt, ... ça simplifie beaucoup la mise en place du contexte.

Qt et Gtk sont des toolkits visant une grande variété de plateformes, en particulier certaines sans accélération graphique. On trouve toute sortes de façon de dessiner. Je crois même que j'avais vu un backend html pour gtk.

DirectX est un ensemble de bibliothèque contenant entre autre Direct3D qui est un équivalent à OpenGL. Mais OpenGL est aussi disponible sur WIndows.

Un utilisateur (et l'environnement de bureau est lancé par l'utilisateur) ne peut pas changer le fichier de configuration de X.org qui appartient à root. Mais beaucoup de chose peuvent être changées à l'exécution par l'utilisateur donc par le bureau. Mais ces changements ne s'applique pas à tout le système.

Le manque de clarté est attendu : il est dur de poser les bonnes questions quand on ne connait pas. Les distributions linux sont pleines de composants interagissant les uns avec les autres et c'est dur de s'y retrouver au premier abord.

Edit: Je rajoute un lien vers un article (en anglais, j'espère que ça te convient) qui détaille tout ça et écrit par quelqu'un qui s'y connait sûrement mieux que moi : http://blog.mecheye.net/2012/06/the-lin … ics-stack/ par l'auteur de ce blog d'explication sur X https://magcius.github.io/xplain/article/index.html avec serveur X implémenté en javascript.

Dernière modification par Clémentv (Le 13/01/2015, à 21:40)

Hors ligne

#5 Le 14/01/2015, à 13:34

Mr papier

Re : Différence Xorg, Environement de bureau, Qt, OpenGL,ect...

Ok merci pour les docs et les précisions. Ca m'aide beaucoup un grand merci.

Hors ligne