Bonjour,

Je suis à la recherche des éventuelles fuites de mémoire pouvant se trouver dans mon code et memcheck/valgrind me sort la chose suivante (entre autres) au niveau de la mise à jour de mon VBO :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
==2601== Invalid write of size 1
==2601==    at 0x04027420: memcpy (mc_replace_strmem.c:497)
==2601==    by 0x08057291: ObjetVP::updateCoordonneesVertex() (ObjetVP.cpp:227)
==2601==    by 0x08057977: ObjetVP::refreshAffichage() (ObjetVP.cpp:416)
==2601==    by 0x0805c7d8: TextureVP::display() (TextureVP.cpp:149)
==2601==    Address 0xb6ed741e is not stack'd, malloc'd or (recently) free'd
==2601==
Or justement, le contenu de la méthode updateCoordonneesVertex() est le suivant :
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
/**
 * Met à jour les coordonnées des vertex du VBO.
 * @return -1 en cas d'erreur, 0 sinon
 */
int ObjetVP::updateCoordonneesVertex() {
	// Début de la communication avec le VBO
	glBindBuffer(GL_ARRAY_BUFFER, vboId);
	pos_vbo = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY);
	if (pos_vbo == NULL) {
		return -1;
	}
 
	printf("sz tabVertex: %d --- nbVertex: %d --- sz Vertex: %d\n", sizeof(tabVertex), NB_VERTEX, sizeof(Vertex));
	// Transfert de la mise à jour au VBO
	memcpy(pos_vbo, tabVertex, NB_VERTEX * sizeof(Vertex));
	// On termine la communication avec le VBO
	glUnmapBuffer(GL_ARRAY_BUFFER);
	pos_vbo = NULL;
	return 0;
}
Je ne comprends pas d'où vient l'erreur sachant que :
- La ligne du printf() me renvoie bien "sz tabVertex: 7200 --- nbVertex: 225 --- sz Vertex: 32".
- Je ne pense pas avoir fait quelque chose de trop différent du tuto dont je me suis inspiré.

Donc si vous avez une idée... O_o

Merci et bonne journée.