Bonjour,
Je n'ai pas lu le tuto, mais à la lecture du code, je pense que :
screen est un tableau de hauteurPixel lignes, chaque ligne ayant largeurPixel colonnes et chaque colonne ayant nbCouleurs canaux de couleurs.
Cela doit ressembler à quelque chose comme ça :
float screen[hauteurPixel*largeurPixel*nbCouleurs];
Les trois boucles for itèrent :
1 2 3 4 5 6
| for(unsigned long j=0; j< hauteurPixel; ++j)
{ // pour chaque ligne
for(unsigned long i=0; i< largeurPixel; ++i)
{ // pour chaque colonne
for(unsigned int k=0; k < nbCouleurs; ++k)
{// pour chaque canal de couleur |
Le premier canal [k=0] de la première colonne [i=0] de la première ligne [j=0] est screen[0]
Le second canal [k=1] de la première colonne [i=0] de la première ligne [j=0] est screen[1]
...
Le dernier canal [k=nbCouleurs-1] de la première colonne [i=0] de la première ligne [j=0] est screen[nbCouleurs-1]
Le premier canal [k=0] de la seconde colonne [i=1] de la première ligne [j=0] est screen[nbCouleurs + 0]
Le second canal [k=1] de la seconde colonne [i=1] de la première ligne [j=0] est screen[nbCouleurs + 1]
...
Le dernier canal [k=nbCouleurs-1] de la seconde colonne [i=1] de la première ligne [j=0] est screen[nbCouleurs + nbCouleurs-1]
Pour synthétiser, quand on a parcouru i colonnes en entier, on a parcouru i*nbCouleurs entrées de screen.
De la même façon, quand on a parcouru j lignes en entier, on a parcouru (en remplaçant i par largeurPixel) : largeurPixel * nbCouleurs entrées de screen.
Donc à un moment (j,i,k) donnée, on a parcouru :
j * (largeurPixel* nbCouleurs ) + i * nbCouleurs + k
Ce qu'il factorise en :
nbCouleurs * (j*largeurPixel + i) + k
Partager