2010-11-21 6 views
1

Für den Kontext versuche ich ein einfaches 1x1 Lego Brick in OpenGL zu modellieren. Ich richte meine Kamera ein, um den Ursprung zu betrachten, und "hoch" ist in Y-Richtung. Ich versuche, einen Zylinder für die kleine Noppe auf dem Würfel zu zeichnen, und kann nicht herausfinden, wie man ihn dreht. C++ Code:Wie drehe ich einen gluCynlinder in 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(); 

Ich versuche es um die x-Achse um 90 Grad zu drehen, aber glRotatef scheint nicht, etwas zu tun, oder macht einfach das Ganze verschwinden. Was vermisse ich?

Antwort

1

gut für mich gearbeitet:

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(); 

Egal, welche Reihenfolge der glRotate und glTranslate ich benutzt habe.

+0

Ich änderte die Reihenfolge zu etwas näher zu diesem und es hat besser funktioniert. Ich stoße immer noch auf das Problem, bei dem zunächst nichts gezeichnet wird, und dann erscheint der Zylinder, wenn ich auf eine der Kamerasteuerungen stoße ... –

+0

Vielleicht hast du deine Kamera falsch aufgestellt? – shybovycha

+0

Nein. Der Kontrollfluss ist das Problem. Sie müssen - Erstellen Sie das Quadric-Objekt einmal vor allen Rendering, - rufen Sie die restlichen Funktionen (von glPushMatrix zu glPopMatrix) jedes Bild. – Kos