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 01/12/2023, à 05:56

It4rI

comment afficher un pixel sans lib graphique ?

bien le bonjour tout le monde

j'aimerais savoir comment procéder pour pouvoir afficher un pixel de la manière la plus simple possible sans utiliser d'API graphique tiers tels que OpenGL, Vulkan ou encore même SDL.
je m'explique:

admettons que j'installe un système d'exploitation tel que Debian dans la version la plus minimale possible aucun outil installé, pas de bureau pas d'application graphique donc pas X11, enfin bref un terminal tout ce qu'il y a de plus simple sans fioriture.
l'objectif serait de tout simplement afficher un pixel de la couleur souhaitée avec un programme codé en C à la position X,Y voulu sur un écran VGA standard
et quand je dis de la manière la plus simple possible je veux dire par là la manière la plus directe (apparemment Linux aurait un espace mémoire dédié à ce genre de manipulation)

j'ai des connaissances assez solides en C mais je ne suis pas un expert dans ce domaine.
si quelqu'un a des pistes à me donner je suis preneur merci beaucoup !

Hors ligne

#2 Le 01/12/2023, à 12:04

Chaosphere

Re : comment afficher un pixel sans lib graphique ?

Hello,

A l'époque et sous DOS je programmais des trucs en mode graphique 320*200 et 256 couleurs sans avoir besoin d'une quelconque lib... Pour faire ca il fallait basculer en mode 13h
Mais c'était sous Dos, je ne sais pas du tout si ca fonctionnerai sous Linux...

https://fr.wikipedia.org/wiki/Mode_13h

Hors ligne

#3 Le 01/12/2023, à 12:37

Nuliel

Re : comment afficher un pixel sans lib graphique ?

Bonjour,
Est-ce que ncurses conviendrait? (c'est ce qu'utilise midnight commander)
Ou tu souhaites vraiment faire sans aucune lib?

Dernière modification par Nuliel (Le 01/12/2023, à 12:37)

Hors ligne

#4 Le 01/12/2023, à 16:30

It4rI

Re : comment afficher un pixel sans lib graphique ?

Nuliel a écrit :

Bonjour,
Est-ce que ncurses conviendrait? (c'est ce qu'utilise midnight commander)
Ou tu souhaites vraiment faire sans aucune lib?

malheureusement non ce n'est pas exactement ce que je recherche hmm
car cette lib utilise des caractères ASCII pour faire du TUI je ne peux donc pas manipuler de pixel précis sur mon écran...
de plus c'est une librairie et j'ai décrété que utiliser une librairie c'est tricher tongue

Hors ligne

#5 Le 01/12/2023, à 16:34

It4rI

Re : comment afficher un pixel sans lib graphique ?

Chaosphere a écrit :

Hello,

A l'époque et sous DOS je programmais des trucs en mode graphique 320*200 et 256 couleurs sans avoir besoin d'une quelconque lib... Pour faire ca il fallait basculer en mode 13h
Mais c'était sous Dos, je ne sais pas du tout si ca fonctionnerai sous Linux...

https://fr.wikipedia.org/wiki/Mode_13h

d'après ce que j'ai pu voir pas sûr que ça soit encore d'actualité sous Linux hmm

Hors ligne

#6 Le 01/12/2023, à 16:42

It4rI

Re : comment afficher un pixel sans lib graphique ?

j'ai continué à faire mes recherches dans la matinée et j'ai trouvé ça: Framebuffer_Linux

après quelques recherches sur ce sujet je suis tombé sur la conférence d'un mec qui explique comment cela fonctionne et comment manipuler les pixels (lien de la conférence ici:Back to the Linux Framebuffer!)
j'ai fait quelques essais de mon côté cela fonctionne correctement mais je ne sais pas si c'est une manière optimisée de faire ce que je recherche je pense que je vais me contenter de ca pour le moment mais si vous avez d'autres idées je suis preneur big_smile

Hors ligne

#7 Le 02/12/2023, à 12:58

Chaosphere

Re : comment afficher un pixel sans lib graphique ?

Ah oui c'est vrai que j'avais déjà vu le Tux affiché en mode console et je m'étais justement demandé comment ils faisaient ca...
Ca à l'air pas mal ce truc...

Hors ligne

#8 Le 02/12/2023, à 13:36

Nuliel

Re : comment afficher un pixel sans lib graphique ?

Prochaine étape: se passer aussi de la libc big_smile

Hors ligne

#9 Le 31/12/2023, à 19:29

LeoMajor

Re : comment afficher un pixel sans lib graphique ?

sans lib graphique, cela revient à faire du tty
exemple
A/ pbm

cat i.plain.pbm 
P1
7 7
0001000
0000000
0011000
0001000
0001000
0001100
0000000

B/ xbm
convert i.plain.pbm i.xbm   # ou pbmtoxbm
cat i.xbm

#define i_width 7
#define i_height 7
static char i_bits[] = {
  0x08, 0x00, 0x0C, 0x08, 0x08, 0x18, 0x00, };

C/xpm
cat i.xpm

/* XPM */
static char *i[] = {
/* columns rows colors chars-per-pixel */
"7 7 2 1 ",
"  c none",
". c white",
/* pixels */
"   .   ",
"       ",
"  ..   ",
"   .   ",
"   .   ",
"   ..  ",
"       "
};

xpm gère la couleur et la transparence avec "none"

D/ en tty

img2txt i.plain.pbm  # ou i.xpm 

tu as besoin de 3 paquets  #netpbm imagemagick caca-utils

https://github.com/cacalabs/libcaca/blo … /img2txt.c
montre que l'hypothèse de travail nécessite image.width image.height font.width font.height -> ratio

E/ la variante fontforge est plus longue à mettre en place

Hors ligne