Bonjour, (Je pense que c'est le bon endroit où poster le topic...)
Je voudrais adapter un programme type "ancienne génération" fonctionnant apparement sous dos avec l'ancien mode de couleur 8 bits (256 couleurs) sur mon environnement graphique fonctionnant en mode RGB 24bits (1 octet par couleur donc).
Ce que je ne comprend pas c'est comment fonctionne la lecture des couleurs.
Voici une partie du code (je ne met pas tout pour ne pas surcharger l'ensemble)
Apparement, la variable screen est un tampon dans lequel sont stockées les couleurs de chaque pixel puis il est recopier vers la zone mémoire de l'écran.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 #include <stdio.h> #include <stdlib.h> #include <malloc.h> #include <graph.h> #include <limits.h> unsigned char *screen; /****************************************************************************/ /* ClearBuffer() : vide le contenu de l'ecran virtuel */ /****************************************************************************/ void ClearBuffer(void) { memset(screen,0,320*200); } /****************************************************************************/ /* ShowBuffer() : transfert l'ecran virtuel vers la zone d'ecran */ /****************************************************************************/ void ShowBuffer(void) { memcpy((unsigned char *)(0xA000 << 4), screen, 320*200); } /****************************************************************************/ /* MyInitGraph() : ouverture de l'ecran graphique et alloc ecran virtuel */ /****************************************************************************/ void MyInitGraph() { int i; /* Allocation de l'ecran virtuel */ screen=(unsigned char*)calloc(320*200,sizeof(unsigned char)); /* passe en 320*200 256 couleurs */ _setvideomode(19); }
La principale difficulté vient du fait que je ne connais pas du tout comment fonctionne ce mode. Quelqu'un sait comment à partir d'une valeur unsigned char (entre 0 et 255) du tableau, je peus arriver à décomposer la couleur en valeurs RGB ?
Partager