Visualisation en openGL

Lutin31 Messages postés 3 Date d'inscription dimanche 10 janvier 2010 Statut Membre Dernière intervention 12 janvier 2010 - 12 janv. 2010 à 16:33
Lutin31 Messages postés 3 Date d'inscription dimanche 10 janvier 2010 Statut Membre Dernière intervention 12 janvier 2010 - 12 janv. 2010 à 17:28
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

BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
12 janv. 2010 à 17:00
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...
0
Lutin31 Messages postés 3 Date d'inscription dimanche 10 janvier 2010 Statut Membre Dernière intervention 12 janvier 2010
12 janv. 2010 à 17:10
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...
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
12 janv. 2010 à 17:23
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...
0
Lutin31 Messages postés 3 Date d'inscription dimanche 10 janvier 2010 Statut Membre Dernière intervention 12 janvier 2010
12 janv. 2010 à 17:28
Je vais tester ca

merci
0
Rejoignez-nous