Bonjour à tous ,
Voila mon problème:
Je code un logiciel de CAO. Sur mon PC de développement le logiciel fonctionne parfaitement, or sur au moins deux autres PC il ne produit pas les même résultat que sur mon pc de dev.
Donc ni une ni deux j'instal mon code source sur une des deux autres PC et je fait du pas a pas pour observé qu'elle est le resultat qui change, je trouve donc que la fonction :
int hits = glRenderMode (GL_RENDER);
ne me renvoi pas la même chose sur les PC.Sur mon Pc de Dev elle me renvoi 1, tandis que sur mon autre PC elle me renvoi 0.
Je vais donc voir mon ami Google et je trouve :
Si une erreur est générée, glRenderMode renvoie 0 quel que soit le mode de rendu courant.
Or je trouve sur la même page :
La valeur de retour de glRenderMode est déterminée par le mode de rendu au moment glRenderMode est appelée, plutôt que par le mode . Les valeurs retournées pour les trois modes de rendu sont les suivantes:
GL_RENDER
0.
Donc euhhhh soit j'ai pas tout compris , soit il me renvoi 0 en temps normal ET en temps pas normal.
Bon admettons que je n'ai pas tout bien compris est que le 0 est bien une erreur.
Je pose donc le fameux :
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
| if ( hits == 0)
{
GLenum error = glGetError();
int i = -1;
switch( error)
{
case GL_INVALID_ENUM:
i=1;
break;
case GL_INVALID_VALUE:
i=2;
break;
case GL_INVALID_OPERATION:
i = 3;
break;
case GL_STACK_OVERFLOW :
i = 4;
break;
case GL_STACK_UNDERFLOW:
i = 5;
break;
case GL_OUT_OF_MEMORY:
i = 6;
break ;
case GL_NO_ERROR :
i = -1;
break;
} |
qui me renvoi GL_INVALID_OPERATION. Du coup toujours chez mon ami Google je trouve :
GL_INVALID_OPERATION is generated if glRenderMode is executed between the execution of glBegin and the corresponding execution of glEnd.
Mais je ne comprend pas que si le code soit le même je puisse être en même temps au bon endroit sur un PC et pas sur l'autre.
Merci à ceux qui pourront me répondre.
Partager