@Override
    public void drawScene()
    {
        // Background color.
        gl.glClearColor(1f, 1f, 1f, 0f);

        // Clear background.
        gl.glClear(GL_COLOR_BUFFER_BIT);

        // Clear depth buffer.
        gl.glClear(GL_DEPTH_BUFFER_BIT);

        // Set color to black.
        gl.glColor3f(0f, 0f, 0f);

        gl.glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);

        // Draw the axis frame
        if (gs.showAxes)
        {
            drawAxisFrame();
        }

        gl.glEnable(GL_LIGHTING);

        for(Robot r : robots)
            r.update(this.raceTrack);
        // Draw the first robot
        gl.glPushMatrix();
        robots[0].draw(gs.showStick);
        gl.glPopMatrix();
        // Draw the second robot
        gl.glPushMatrix();        
        robots[1].draw(gs.showStick);
        gl.glPopMatrix();
        // Draw the third robot
        gl.glPushMatrix();        
        robots[2].draw(gs.showStick);
        gl.glPopMatrix();
        // Draw the fourth robot
        gl.glPushMatrix();        
        robots[3].draw(gs.showStick);
        gl.glPopMatrix();
        
        // Draw race track
        raceTrack.draw(gs.trackNr);

         gl.glDisable(GL_LIGHTING);
        
        // Draw terrain
        terrain.draw();

        // Unit box around origin.
        glut.glutWireCube(1f);

        // Move in x-direction.
        gl.glTranslatef(2f, 0f, 0f);

        // Rotate 30 degrees, around z-axis.
        gl.glRotatef(30f, 0f, 0f, 1f);

        // Scale in z-direction.
        gl.glScalef(1f, 1f, 2f);

        // Translated, rotated, scaled box.
        glut.glutWireCube(1f);
    }