2010-05-26 3 views
3

Ok donc voici le lien vers le code en C++ http://pastebin.com/nfPmd0um (avec des commentaires en polonais;) Je voudrais faire une sphère divisée par quatre plans. Chaque partie de la sphère devrait avoir une couleur différente. Pour l'instant il n'affiche que 2 parties colorées. Je sais que quelque chose ne va pas avec cette partie de code dans la fonction d'affichage():Sphère colorée dans OpenGL

glEnable (GL_CLIP_PLANE0 +i); 
glDisable (GL_CLIP_PLANE1 -i); 

glEnable (GL_CLIP_PLANE2 +i); 
glDisable (GL_CLIP_PLANE3 -i); 

Quelqu'un sait ce que je dois changer? Merci d'avance :)

+0

Une approche intéressante. Assurez-vous d'utiliser quatre espaces indent dans votre code sur StackOverflow, et bienvenue! –

Répondre

1

Pourquoi utilisez-vous + i dans votre appel glEnable/Disable. Ce qui implique que, après avoir incrémenté de 1, vous modifiez des plans au-dessus de l'index (GL_CLIP_PLANE3) et qu'aucun plan n'y est défini. Supprimez donc "i" de votre code glEnable/Disable et utilisez quelque chose comme (mod (i, 4) == i% 4).

Ketan

0

Je suis d'accord avec Ketan. Vous cherchez peut-être ceci:

glEnable (GL_CLIP_PLANE0 +i); 
glDisable (GL_CLIP_PLANE0 + (1+4-i)%4); 

glEnable (GL_CLIP_PLANE0 +(2+i)%4); 
glDisable (GL_CLIP_PLANE0 +(3+4-i)%4); 

Par exemple, le (1 + 4-i)% 4 partie vous donne la séquence 1 0 3 2 que je passe de 0 1 2 3. De même, le dernier plan de clipping itère 3 2 1 0.