G
Gast
Gast
Hallo zusammen,
ich fange gerade an mit GL4Java zu arbeiten und habe angefangen Polygone zu zeichnen.
Nun möchte ich ein Dreieck animieren und weiss nicht recht wie ich das anstellen soll.
Ich denke ich muss die Funktion display() entsprechend verändern, um mein Dreieck rotieren zu lassen.
Die Funktion sieht sol aus:
Ich habe hier eine Endlosschleife eingebaut, die den Rotatonswinkel des Dreiecks verändert.
Leider rotiert da nicht viel.
Vielleicht kann mir hier jemand den nötigen Anstoß geben, damit ich es verstehe.
Danke.
Grüße
ich fange gerade an mit GL4Java zu arbeiten und habe angefangen Polygone zu zeichnen.
Nun möchte ich ein Dreieck animieren und weiss nicht recht wie ich das anstellen soll.
Ich denke ich muss die Funktion display() entsprechend verändern, um mein Dreieck rotieren zu lassen.
Die Funktion sieht sol aus:
Code:
public void display(){
// überprüft ob der OpenGL-Kontext initialisiert ist
if(glj.gljMakeCurrent()==false) { return; }
// löschen des Color Buffer
gl.glClear(GL_COLOR_BUFFER_BIT);
// zurück setzten der Szene in ihren ursprünglichen Zustand
//gl.glLoadIdentity();
// Skalierung des Dreiecks um 2 Einheiten in X Richtung und 2
// Einheiten in Y Richtung
gl.glScalef(1, 1, 1);
// Verschiebung des Dreiecks nach rechts um 2 Einheiten
gl.glTranslatef(1.0f,0.0f,0.0f);
float x = 0.000000000000000000001f;
while(true){
//neuanzeige erzwingen
//gl.glFlush();
// Drehung des Dreiecks um die X-Achse um 25°
gl.glRotatef(25.0f + x,0.0f,1.0f,0.0f);
// erstellen einer gerichteten Lichtquelle
gl.glEnable(GL_LIGHTING);
float ambient[] = {0.8f, 0.8f, 0.8f, 0.0f};
float richtung[] = {0.0f, 0.0f, 1.0f, 0.0f};
gl.glLightfv(GL_LIGHT0, GL_AMBIENT_AND_DIFFUSE, ambient);
gl.glLightfv(GL_LIGHT0, GL_POSITION, richtung);
gl.glEnable(GL_LIGHT0);
// Hier Zeichenbefehle -----------------------------------
// Auswahl der OpenGL - Primitive
gl.glBegin(GL_TRIANGLES);
// Zeichenfrabe auswählen
gl.glColor3f(2.0f, 1.0f, 1.0f);
// Zeichnen des Dreiecks
gl.glVertex3f( 0.0f, 1.0f,-5.0f);
gl.glVertex3f( 1.0f,-1.0f,-5.0f);
gl.glVertex3f(-1.0f,-1.0f,-5.0f);
// Beenden der OpenGL - Primitiven Eingabe
gl.glEnd();
// Umschalten des doublebuffers
glj.gljSwap();
// gibt den OpenGL-Kontext wieder frei
glj.gljFree();
}
}//end of display
Ich habe hier eine Endlosschleife eingebaut, die den Rotatonswinkel des Dreiecks verändert.
Leider rotiert da nicht viel.
Vielleicht kann mir hier jemand den nötigen Anstoß geben, damit ich es verstehe.
Danke.
Grüße