Glut glutDisplayFunc(display)
-
Hallo,
ich habe die Aufgabe einen Baum zu erstellen, von dessen Stamm (Linie) immer zwei Zweige abführen und dann immer soweiter bis die Linien zu klein zum zeichnen sind und nicht gezeichnet werden. Dass soll rekursiv geschehen. Ich wollte das mit glut machen und hab schon den Stamm gezeichnet. Das Problem ist aber, das ich an die display Funktion keine Parameter übergeben kann (Farbe oder Position). Hab schon rumgesucht und gefunden, dass man globale Variablen verwenden soll. Aber dann kann ich das mit der rekursion doch vergessen oder?
#include <GL/glut.h> #include <iostream> using namespace std; float grauwert; void display() { glClear(GL_COLOR_BUFFER_BIT); glBegin(GL_LINES); glColor3f(grauwert, grauwert, grauwert); glVertex2f(0.50, 0.25); glVertex2f(0.50, 0.75); glEnd(); glFlush(); } int main(int argc, char **argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(800, 600); glutInitWindowPosition(100, 740); glutCreateWindow("Test"); glClearColor(1.0, 1.0, 1.0, 1.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0); cout<<"Grauwert: "; cin>>grauwert; glutDisplayFunc(display); glutMainLoop(); }
-
Hi,
die 'Glut glutDisplayFunc(display)' setzt ja nur eine Callback Funktion die vom System ( Glut ) immer wieder für dich aufgerufen wird um jeden deiner Frames zu zeichen.
Die Logik für deine Rekursion kannst du ja nennoch hier verbauen, indem du aus der displayFunc herraus eine Funktion aufrufst die dann rekursiev arbeitet.Sieh die 'glutDisplayFunc' einfach nur als einstiegspunkt in deine eigene Logik.
in OpenGL ist ja eh fast alles Global als StateMashin angelegt, daher kannst du auch so arbeiten.cu
uwi