2010-11-21 6 views
1

Pour le contexte, j'essaie de modéliser une simple brique lego 1x1 en OpenGL. Je configure mon appareil photo pour regarder l'origine et 'up' est dans la direction Y. J'essaye de dessiner un cylindre pour le petit nœud sur le cube, et je n'arrive pas à comprendre comment le faire pivoter. C++ Code:Comment faire pivoter un GluCynlinder dans OpenGL?

//draw cylinder 
glPushMatrix(); 
glTranslated(0.0, 0.4 , 0.0); 
//glRotatef(angle, 1.0f, 0.0f, 0.0f); 
GLUquadricObj * qobj = gluNewQuadric(); 
gluCylinder(qobj, 0.24, 0.24, 0.18, 16, 16); 
glPopMatrix(); 

Je suis en train de tourner autour de l'axe x de 90 degrés, mais glRotatef ne semble pas faire quoi que ce soit, ou fait simplement disparaître la chose. Qu'est-ce que je rate?

Répondre

1

ont bien fonctionné pour moi:

glPushMatrix(); 
GLUquadricObj * qobj = gluNewQuadric(); 
glTranslated(0.0, 0.4 , 0.0); 
glRotatef(angle * 10, 0.0f, 1.0f, 0.0f); 
gluCylinder(qobj, 1.24, 1.24, 1.18, 16, 16); 
gluDeleteQuadric(qobj); 
glPopMatrix(); 

Peu importe quel ordre de glRotate et glTranslate je l'ai utilisé.

+0

J'ai changé la commande pour quelque chose de plus proche de cela et cela a mieux fonctionné. Je rencontre toujours le problème où rien n'est dessiné au départ, et puis le cylindre se lève quand je frappe l'un des contrôles de la caméra ... –

+0

Peut-être que vous avez configuré votre appareil photo dans le mauvais sens? – shybovycha

+0

Non. Le flux de contrôle est le problème. Vous devez - créer l'objet quadric une fois, avant tout rendu, - appeler les fonctions restantes (de glPushMatrix à glPopMatrix) à chaque image. – Kos

Questions connexes