Comme je sais que vous êtes plusieurs à l'avoir converti et ou même optimisé, je voudrais bien un ptit coup de main...
J'ai un début: (j'ai laissé en commentaire le pseudo code C du tutorial)
void Z_Buffer()
{
int x,y;
for(y=0;y<160;y++) // for(y=0;y<YMAX;y++)
for(x=0;x<240;x++) // for(x=0;x<XMAX;x++)
PutPixel(x,y,0x00); // usuellement on met 0 ,consiste juste à vider l'écran
for(i=0;i<Nb_faces;i++) // for(chaque polygone)
for(j=0;j<Point2D[i];j++) // for(chaque point du polygone projete)
double z = Facette[i].z // profondeur du pixel de coord (x,y) à l'ecran
if(z>LireZ(x,y)) // retourne la valeur du buffer Z en (x,y)
{
Ecrire Z(x,y,z);
PutPixel(x,y,couleur);
}
}
Déja je comprend pas tout: la première partie sert à effacer l'écran au lieu d'initialiser le tableau z-buffer à zero ?
La difficulté consiste à trouver z, ...d'après le tutorial z = (-D -Ax -By)/C , que representent ces valeurs?
Puis la dernière partie:
if(z>LireZ(x,y)){ // donc il y faudra déclarer et initialiser le tableau z?
Ecrire Z(x,y,z);
PutPixel(x,y,couleur);} // alors là je suppose que z_buffer() est appelé à la place de PutPixel dans la fonction fill_triangle ? (je me demandais si elle etait appelée à la place de ClearBuffer...ou ailleur...)