Afficher une image
Linus
-
ElementW Messages postés 5690 Statut Contributeur -
ElementW Messages postés 5690 Statut Contributeur -
Bonjour,
J'ai coder un programme qui permet de lire le contenu d'un fichier bmp en mode binaire. J'ai donc un fichier ou j'ai la quantité de RGBA de chaque pixel. Mais j'aimerais afficher ces pixels à l'écran. Comment pourra-je faire, SANS UTILISER DE BIBLIOTHÈQUE DE MULTI-FENETRAGE ?
J'ai coder un programme qui permet de lire le contenu d'un fichier bmp en mode binaire. J'ai donc un fichier ou j'ai la quantité de RGBA de chaque pixel. Mais j'aimerais afficher ces pixels à l'écran. Comment pourra-je faire, SANS UTILISER DE BIBLIOTHÈQUE DE MULTI-FENETRAGE ?
3 réponses
-
'lut, c'est quoi une "bibliothèque de multi-fenêtrage" pour toi? Une bibliothèque comme GTK+ ou Qt, ou autre chose? Tu es sous quelle plateforme?
(Je suppose Linux vu 1. ton nom 2. tes posts précédents (si c'est toi), dans ce cas voudrais-tu dire "sans serveur de fenêtres comme X11"?) -
Qt n'était qu'un exemple, mais oui ce n'est que pour le C++.
Sous Linux, 2 choix s'offrent à toi pour afficher sans X11, soitfbdev
, soit KMS.
fbdev
consiste à ouvrir le fichier/dev/(fb/)fbX
et a écrire des octets dedans directement, le plus souvent au travers d'unmmap
pour la simplicité. De nombreux tutoriels sont dispo en ligne pour savoir comment faire, en soi c'est pas hyper compliqué. Le seul hic peut être le format d'image qu'attendfbdev
, mais généralement sur PC c'est du RGB(A)888(8), le plus simple a gérer (3/4 couleurs de 0 à 255, les appareils mobiles ont souvent du RGB565, une "traduction" de couleurs et alors nécessaire).
KMS est beaucoup plus récent et s'appuie sur l'accès direct a la carte graphique (ouverture de/dev/dri/cardX
). Donc si tu utilises un driver propriétaire, notamment celui de nVidia, c'est fichu, car ils peuvent pas implémenter ça (question de licence). Autrement, ça te permet d'arriver aux mêmes fins quefbdev
, avec l'avantage de la gestion explicite de l'écran et de la résolution à laquelle tu affiches, ainsi que la synchro verticale. Le désavantage c'est que c'est plus complexe à mettre en place quefbdev
(mais aussi simple a utiliser). Les meilleurs exemples que j'ai trouvé sont sur github. Le plus cool c'est que avec KMS+GBM on peut même faire de la 3D avec OpenGL! (oui, sans serveur X11)
Généralement on prendfbdev
car c'est plus ancien donc plus répandu, et aussi plus simple. -
Oui, c'est ça merci ! C'est bien X11 que je cherchais (en non GTK+, QT ou encore SDL). Mais QT n'est pas que pour le C++ ?