-
algorithme de z buffer
bonsoir,
j'ai besoin de realiser l'algorithme de z buffer. je connue que le z buffer a une matrice qui contiet le profondeur minimal ou la destance minimale entre l'objet et le camera. theoriquement je compris l'algorithme mais je nepeut pas realiser en langage c avec open gl. mon probleme est quelle est la relation entre l'objet qui est un maillage triangulaire dans ma cas et le tompon de profondeur en d'autre terme comment connaitre que ce point qu'est appartient au sommet de triangle est concerne ce pixel dans la matrice de z buffer pour appliquer la comparision et voir est ce que superieur ou inferieur au donner deja stocké dans la matrice de z buffer.
svp aidez moi et merxi d'avance.
-
salut a tt,
svp quelqu'un m'aidez comment faire la projection des point avec opengl car le z buffer est une projection seulement
-
Premièrement, je viens de remarquer que vous avez ouvert un nouveau post sur le forum pour la même chose, me semble t'il, mais toujours aussi mal expliquer.
Donc comme je l'ai dit, et que je le répète .... il nous faut plus de précision ( dans un français un peu plus correct s'il vous plait ).
Maintenant, la relation entre un z-buffer, et les triangles, c'est que lorsque l'on demande de dessiner un triangle, nous allons calculer la distance avec la camera, on va mettre cette distance, dans notre z-buffer ( avec les autres details du pixel, j'imagine ), mais nous les mettons que si nous n'avons rien d'autre devant ( soit si la case de notre z-buffer n'est pas plus petite que la distance que l'on vient de calculer ).
-
Bonjour,
j'essaie d'implémenter l'algorithme de z buffer en langage c comme suit:
la fonction initzbuffer pour initialiser la matrice de profondeur a valeur maximal. la valeur maximal est stocke dans la variable prfi
void initzbuffer()
{
for(int i=0;i<60;i++)
{
for(int j=0;j<74;j++)
{
zbuffer[i][j]=prfi;
}
}
}
la fonction carteprofondeur pour construire la matrice ou en d'autre terme la carte de profondeur
void carteprofondeur()
{
facet *f;
float x,y,z;
printf("debute de construction de la carte de profondeur");
f=teteft;//teteft est la tete de la liste des facette triangulaire
while (f!=NULL)
{
for(int i=0;i<3 ;i++) //i de 0 a 2 car on a chaque ellement de la liste est contient 3 somment et on a aussi la liste des sommet
{
x=f->ft[i]->v.x;
y=f->ft[i]->v.y;
z=f->ft[i]->v.z;// x, y et z contient les coordonnée des sommet
calculer zprofondeur a (x, y) // mon probleme est a cette instruction tel que comment calculer zprofondeur a pixel (x,y)
if (zprofondeur<zbuffer[x][y])
zbuffer[x][y]=zprofondeur
}
f=f->suivft;
}
printf("fin de construction de la carte de profondeur");
}
svp aidez moi
-
Pouvez vous mettre votre code dans des balises [ C O D E ] et [ / C O D E ] ( sans les espaces ) et aussi refaire l'indentation du code, car là, c'est un peu illisible.
Pour les balises elle sont facilement accessible en cliquant sur le bouton '#' pendant l'édition.
-
Vous avez ouvert deux nouveaux en parlant d'OpenGL.
Je croyais que vous vouliez évité d'utiliser OpenGL ... Enfin bref ... Passons :rolleyes: