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 à:
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.
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
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:
Merci d'avance!
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);
Partager