2010-12-13 51 views
0

Je travaille sur un projet qui n'utilise que OpenGL (il est supposé devenir un jeu pour être précis), maintenant après quelques semaines de développement je suis tombé sur la possibilité d'attraper des erreurs OpenGL avec GL.GetError(). Depuis que je n'aime pas que cela dit seulement ce qui s'est mal passé, mais pas où, je veux obtenir l'erreur qui se produit cependant.OpenGL Erreur sous-dépassement se transforme en débordement?

Alors voici ce qui se passe: Lors du lancement de l'application il y a quelques cadres (trois ou quatre) avec StackUnderflow, il passe à StackOverflow et reste ainsi.

J'ai vérifié la cohérence de ma Matrix- Push - Pop et je n'ai trouvé aucune matrice non fermée. Il peut être intéressant de savoir que, d'après ce que je vois, l'éclairage ne fonctionne pas (tous les visages des différents objets ont la même luminosité).

Y a-t-il une autre cause possbile?

(Si vous voulez voir la source, il y a beaucoup à: http://galwarcom.svn.sourceforge.net/viewvc/galwarcom/trunk/galwarcom/)

Répondre

4

Vous devez définir le mode de matrice avant de sauter puisque chaque mode a une pile séparée. Si vous faites quelque chose comme ça, il underflow:

glMatrixMode(GL_MODELVIEW) 
glPushMatrix(); 
... stuff with model view ... 
glMatrixMode(GL_PROJECTION) 
glPushMatrix() 
... stuff with project matrix ... 
glPopMatrix() // projection popped 
glPopMatrix() // projection again 

Vous faites quelque chose comme ça dans drawHUD(), probablement d'autres endroits.

+0

Merci beaucoup :) –