Bonjour à tous, voilà j'ai un pti soucis je vous donne rapidement le contexte. Je suis étudiant et je dois réaliser un projet pour un hôpital concernant un logiciel d'imagerie médicale.

Je ne suis pas responsable du choix des librairies et les deux librairies choisies ont donc été WxWidget couplé à de l'OPENGL.

Je vous explique mes soucis plus concrètement maintenant. Pour afficher les images, je génère des cubes et je leur applique la texture que j'ai chargé au préalable. Mon problème.... mon code affiche et rafraîchis très bien jusqu'à 30 images... mais j'en ai plus de 80 à afficher... au delà... freeze de Linux... impossible à récupérer. Voilà mon code :

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
 
void GL_Window::drawPixels(Traitement *don)
{
 
	SetCurrent();				// On définit le Canvas comme le Canvas current
 
	glMatrixMode(GL_MODELVIEW);
 
	// Point de vue
	gluLookAt(0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0);
 
	// Initialisation, couleur de fond ...
	glClearColor(0.0, 0.0, 0.0, 0.0);	// On efface la couleur actuelle
 
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  //Efface le frame buffer et le Z-buffer 
 
	glRotatef(180.0f, 180.0f, 0.0f, 0.0f);	// On effectue un flip horizontal du repère
 
	glEnable(GL_DEPTH_TEST);		// On active les options de profondeurs
	glDepthFunc(GL_LESS);			// pour les pixels
 
	glPixelStorei(GL_UNPACK_ALIGNMENT, 1);	// On modifie le mode de stockage des pixels
 
	// On build une texture2D
	GLuint m_Textures_num = -1; 
	glGenTextures(1,&m_Textures_num);
	glBindTexture(GL_TEXTURE_2D,m_Textures_num);
 
	//gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 128, 128, GL_RGB, GL_UNSIGNED_BYTE, RGBA);
	glTexImage2D(GL_TEXTURE_2D,0, GL_RGB, 128, 128, 0, GL_RGB, GL_UNSIGNED_BYTE, RGBA);
	//delete image;
 	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
 	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
// 	glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND);
	glEnable(GL_TEXTURE_2D);		// Activation des Textures2D
// 	glShadeModel(GL_SMOOTH);			// Mode d'application
 
 
	// On dessine le carré et on lui plaque la texture
	GLfloat minX=-1.0,maxX=1.0f;
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glEnable(GL_COLOR_MATERIAL);
 
	glBegin(GL_QUADS);
	glTexCoord2f(0.0f, 0.0f);
	glVertex2f(minX, minX); //glVertex3f(-0.20, -0.1, 0.0);
	glTexCoord2f(0.0f, 1.0f);
	glVertex2f(minX, maxX); //glVertex3f(-0.2, 0.1, 0.0);
	glTexCoord2f(1.0f, 1.0f);
	glVertex2f(maxX, maxX); //glVertex3f(0.0, 0.2, 0.0);
	glTexCoord2f(1.0f, 0.0f);
	glVertex2f(maxX, minX); //glVertex3f(0.0, -0.1, 0.0);
 
 	glEnd();
 
 
 	SwapBuffers();				// On affiche le buffer
	// Libération des textures
	cout << "Libération de la texture " << numero <<endl;
	glDeleteTextures(1,&m_Textures_num);
}
Donc en plus de ne pas afficher plus de 30 images, mon programme subit de graves fuites de mémoires. Qqun voit le trou ? Le pointeur RGBA ne peut être supprimé puisqu'il pointe sur la structure de l'image et qu'au refresh, j'ai encore besoin de ce pointeur.

Je précise que je dessine dans un wxCanvas... mais est-ce la peine ?

Merci pour vos réponses... là perso, je craque... je ne vois ni la fuite de mémoire ni pourquoi il n'affiche pas plus de 30 images !