Bonjour tous.
Voila... J'ai un tableau qui contient une heightmap. Afin de lisser les données contenues dans ce tableaux, je crée un tableaux temporaires. Je copie les données et je calcule les nouvelles. A la fin, je libère le tableau temporaire.
Puis tout de suite, mais dans une autre fonction, je me sers de ce tableaux. Et là j'obtient n'importe quoi.
Si avant de réutiliser le tableau, je veux inscrire les données dans un fichier. Pas de problèmes et tout remarche comme il faut.
Je me dis donc il y a un probleme.
Comme je suis confus dans mes explications... voici un peu de code:
Si je décommente les dernières lignes qui me servent à inscrire mon tableaux dans un fichier, tout est OK (les valeurs dans le fichier et le calcule de mes normales).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 void CreateHeightMap() { // Création du tableau d'altitude du terrain m_pfHeightMap = new float[m_uiNbPointX * m_uiNbPointY]; // On remplis le tableau en parcourant l'image ... //Lissage float* HeightMap = new float[m_uiNbPointX * m_uiNbPointY]; for(unsigned int Y=0; Y<m_uiNbPointY; Y++) for(unsigned int X=0; X<m_uiNbPointX; X++) HeightMap[X + m_uiNbPointX*Y ] = m_pfHeightMap[X + m_uiNbPointX*Y ]; //Lissage centre de l'image for(unsigned int Y=1; Y<m_uiNbPointY-1; ++Y) { for(unsigned int X=1; X<m_uiNbPointX-1; ++X) { m_pfHeightMap[ X + m_uiNbPointX*Y ] = HeightMap[...]*...+...; } } //Lissage des bords idem... delete[] HeightMap; // for(unsigned int Y=0; Y<m_uiNbPointY; Y++) // for(unsigned int X=0; X<m_uiNbPointX; X++) // { // LogDbg(m_pfHeightMap[X + m_uiNbPointX*Y ])<<"\n"; // } }
Bref, il doit y avoir un probleme de synchronisation calcule, libération de la mémoire (ou quelque chose comme ça).
Donc que puis-je faire (std::vector?)
Partager