Visualisation en openGL

Signaler
Messages postés
3
Date d'inscription
dimanche 10 janvier 2010
Statut
Membre
Dernière intervention
12 janvier 2010
-
Messages postés
3
Date d'inscription
dimanche 10 janvier 2010
Statut
Membre
Dernière intervention
12 janvier 2010
-
Bonjour,
J'ai un programme en C qui me crée un fichier de données comme ceci :
0 0 7
1 0 -2
2 0 8
3 0 5
etc...

Je fais ensuite lire ce fichier dans un autre programme, pour visualiser avec openGL le tracé d'un terrain.
Or j'ai une erreur de segmentation au moment d'affecter les données dans la partie de code ci dessous :

for (i = 0; i < (199*199*3)-199; i=i+3) {

v[k][0] = mon_terrain -> points[i];
v[k+1][0] = mon_terrain -> points[i+3];
v[k+2][0] = mon_terrain -> points[i+(200*3)];
v[k+3][0] = mon_terrain -> points[i+3+(200*3)];
v[k][1] = mon_terrain -> points[i+1];
v[k+1][1] = mon_terrain -> points[i+4];
v[k+2][1] = mon_terrain -> points[i+1+(200*3)];
v[k+3][1] = mon_terrain -> points[i+4+(200*3)];
v[k][2] = mon_terrain -> points[i+2];
v[k+1][2] = mon_terrain -> points[i+5];
v[k+2][2] = mon_terrain -> points[i+2+(200*3)];
v[k+3][2] = mon_terrain -> points[i+5+(200*3)];
k=k+4;
}
J'utilise a chaque fois 4 données car je veux que le terrain soit dessiné en carré et non en triangle.

Je sais pas si c'est très clair, mais si quelqu'un avait une solution ça m'aiderai beaucoup.

Merci d'avance

4 réponses

Messages postés
15114
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 août 2021
98
Hello,
J'ai dû mal à comprendre la condition de sortie de ta boucle:
x=(199x199x3) --> carré de 199x199 points ayant 3 coordoonnées
x-199 --> ?? ça correspond à quoi?

De plus, tu sembles remplir des triangles (il y a 3 fois 'v[k]') mais tu incrémentes k de 4 et non pas 3. C'est normal?


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
3
Date d'inscription
dimanche 10 janvier 2010
Statut
Membre
Dernière intervention
12 janvier 2010

il y a 3 fois 'v[k]', un pour chaque coordonnées (x,y et z) et les 4 points viennent de 'k', 'k+1', 'k+2' et 'k+3'.

enfin je t'avoue que je fais ca pour un cours et que j'ai aucune notion de C d'avant, donc je suis pas sur que ce que je viens de dire soit bon...
Messages postés
15114
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
5 août 2021
98
Pour parcourir des matrices, on fait généralement une double boucle
for (int i=0; i<nbColonne-1; i++)
{
  for (int j=0; j<nbLigne-1; j++)
  {
    v[j*nbColonne+i][0] = mon_terrain->points[j*nbColonne+i + 0];
    v[j*nbColonne+i][1] = mon_terrain->points[j*nbColonne+i + 1];
    v[j*nbColonne+i][2] = mon_terrain->points[j*nbColonne+i + 2];
    v[j*nbColonne+i][3] = mon_terrain->points[j*nbColonne+i + 3];
  }
}

Tu peux également faire une boucle sur le nombre de coordonnées...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
3
Date d'inscription
dimanche 10 janvier 2010
Statut
Membre
Dernière intervention
12 janvier 2010

Je vais tester ca

merci