Bonjour,

comme d'habitude je dois tester mes dernières modifications sur une carte en carton, l'Intel 945G.
=> Comme d'habitude mon programme plante là dessus....

En l'occurence, il s'agit ici d'utiliser le stencil buffer afin de faire du "polygon capping" sur mes objets coupés par un clip plane (je fais des vues en coupe).
Tout marche très bien sur mon ordi de développement, mais sur celui de test à base d'Intel 945g, ca plante à l'initalisation du programme.

J'ai pu cerner le problème au niveau du pixel format:
- Si je ne demande pas de stencil buffer, ca marche sur les deux machines...mais évidemment le polygon capping, lui, ne fonctionne pas correctement
- Si je demande un stencil buffer, ca plante sur l'Intel945G

J'ai regardé les différences entre les deux pixel format trouvés quand le programme tourne sur l'ordi à base d' Intel 945G, elles se résument à:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
- Pixel Format 1: 
STENCIL_BITS = 0
SHARE_ACCUM_ARB = TRUE
SHARE_DEPTH_ARB = TRUE
SHARE_STENCIL_ARB = TRUE
 
- Pixel Format 2: 
STENCIL_BITS = 8
SHARE_ACCUM_ARB = FALSE
SHARE_DEPTH_ARB = FALSE
SHARE_STENCIL_ARB = FALSE
Ormis les stencil bits, il y a donc ces valeurs de SHARE_* qui sont différentes. J'avoue ne pas maîtriser forcéments ces notions, mais je pense que le probleme vient de là. Mon programme plante en effet à des lignes qui, avec l'autre pixel format, ne posent aucun probleme (par exemple des appels à glDrawElements ou glActiveTexture), et comme dit il me suffit de désactiver la requete de stencil buffer pour que tout remarche.

Mes questions:
- Celà vous paraît-il plausible / compréhensible?
- Y a-t-il un moyen d'y remedier? J'ai pu tester des tutoriaux utilisant le stencil buffer sur l' intel 945g, il doit bien y avoir moyen...
- Ah et voici ma demande de pixel format, peut être ai-je fait quelque chose de travers ici:

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
static PIXELFORMATDESCRIPTOR pfd =
		{
			sizeof(PIXELFORMATDESCRIPTOR),  // size of this pfd
			1,                              // version number
			PFD_DRAW_TO_WINDOW |            // support window
			PFD_SUPPORT_OPENGL |            // support OpenGL
			PFD_DOUBLEBUFFER,               // double buffered
			PFD_TYPE_RGBA,					// RGBA color mode
			32,                             // 32-bit color depth
			0, 0, 0, 0, 0, 0,               // color bits ignored
			1,								// alpha buffer (enabled to allow using destination alpha)
			0,                              // shift bit ignored
			0,                              // no accumulation buffer
			0, 0, 0, 0,                     // accum bits ignored
			16,                             // 16-bit z-buffer
			1,                              // use stencil buffer (enabled to allow polygon capping in cross-section view)
			0,                              // no auxiliary buffer
			PFD_MAIN_PLANE,                 // main layer
			0,                              // reserved
			0, 0, 0                         // layer masks ignored
		};
 
		int pixelformat = ChoosePixelFormat(m_hdc, &pfd);
Merci d'avance!